The PDO query always returns 1 or true

advertisements

I am trying to check if a row exists before I delete it. The row in my table doesn't exist but it always returns 1:

$orders = $this->db->prepare("SELECT * FROM orders WHERE id=? AND user=?");
            $check = $orders->execute(array($message,$this->model->checkapi($data,$message)));
            echo $check;
            if($check){
            $deleteorder = $this->db->prepare("DELETE FROM orders WHERE id=? AND user=?");
            $deleteorder->execute(array($message,$this->model->checkapi($data,$message)));
                array_push($result, array('success' => true,
                                          'deleted' => $message));
                echo json_encode(array("result" => $result));
                die();
            }else{

$this->model->checkapi($data,$message) returns fakeusername and id/$message returns 136

I've checked my database, the ID exists, but not the id and username together.

I'm sending id: 136 and username: fakeuser

in the databse the row exists as id:136 and username: demo.

I'm not sure why it's returning 1 when the row shouldn't be selected due to it not matching.


You should use fetch() after execute(), because execute() just returns TRUE on success or FALSE on failure :

$orders->execute(...
$result = $orders->fetch(PDO::FETCH_ASSOC);
print_r($result);