检查是否在PDO中执行了SQL查询

时间:2013-03-10 17:52:48

标签: php pdo

在mysql_query中,我们可以通过执行以下操作来检查查询是否已执行:

$query = $yourdbconnection->fetch_array(mysql_query("SELECT * FROM tbl_name"));
if ($query){ // query is working }
else { // query is not working }
在PDO中,我正在做这样的事情:

$query = $yourdbconnection->query("SELECT * FROM tbl_name");
$fetchquery = $query->fetchAll();
if ($fetchquery) { // query is working}
else { // query not working}

我的代码有效吗? if语句究竟在做什么?它是否正在做mysql_query正在做的事情?如何检查查询是否返回0行?

[编辑]

我发现这些解决方案是问题的解决方法

  1. 使用$stmt->fetch()

    准备($的SQL);     $ stmt->执行();
    if ($data = $stmt->fetch()) {
        do {
            echo $data['model'] . '<br>';
        } while ($data = $stmt->fetch());
    } else {
        echo 'Empty Query';}
    
       ?&GT;
  2. 添加另一个查询以计算行数,请参阅this answer

  3. 但是,我仍在寻找更好的解决方案

2 个答案:

答案 0 :(得分:0)

要查看您的查询是否已执行,我建议您将PDO设置为异常模式,例如您的常识建议。你可以这样做:

$dbh = new PDO('mysql:host=localhost;dbname=db', 'user', 'pass');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

关于检查查询是否在PDO中返回值的最佳方法,我建议只执行SELECT COUNT(*) FROM table查询,如下所示:

<?php
$query = $dbh->query('SELECT COUNT(*) FROM table');
if ($query->fetchColumn() != 0) {
    /* Query has result(s) */
    $query = $dbh->query('SELECT * FROM table');
    /* ... */
} else {
    /* Query has no results */
}
?>

如果您有任何其他问题,请告诉我。

答案 1 :(得分:-1)

您的帖子中有2个问题。

  

1)检查查询是否在PDO中返回值的最佳方法是什么?

检查返回值

  

2)如何检查PDO中是否有SQL查询

按照tag wiki

中的说明在异常模式下设置PDO

顺便说一下,对于"SELECT * FROM tbl_name"查询,您可能希望使用fetchAll()代替fetch()