PDO query is always returning 1 or true

前端 未结 2 1904
耶瑟儿~
耶瑟儿~ 2021-01-20 16:45

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


        
相关标签:
2条回答
  • 2021-01-20 17:14

    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.

    0 讨论(0)
  • 2021-01-20 17:18

    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);
    
    0 讨论(0)
提交回复
热议问题