Skip to content Skip to sidebar Skip to footer

PDO Query Is Always Returning 1 Or True

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 i

Solution 1:

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);

Solution 2:

When execute succeeds, it returns TRUE. In your case, the query succeeds, it just returns 0 rows, which is a completely valid result. If you want to check whether the query returned any rows, you could attempt to fetch from the result:

$orders->execute(array($message,$this->model->checkapi($data,$message)));
$check = $orders->fetch();
if ($check) {

Having said that, this entire approach strikes me as wrong - deleting a single row isn't a considerably heavier operation than querying that row, if at all. And in the worst case, where it exists, you're performing two statements instead of one. I'd just go ahead and send the delete statement, and if it doesn't affect any rows (because they don't exist), so be it.


Post a Comment for "PDO Query Is Always Returning 1 Or True"