-2

在 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';}
    
    ?>
  2. 添加另一个查询来计算行数看到这个答案

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

4

2 回答 2

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 */
}
?>

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

于 2013-03-10T18:22:54.650 回答
-1

您的帖子中有 2 个问题。

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

检查返回值

2)如何检查PDO中是否执行了SQL查询

将 PDO 设置为异常模式,如标签 wiki中所述

顺便说一句,对于"SELECT * FROM tbl_name"您可能希望使用的查询,fetchAll()而不是fetch().

于 2013-03-10T17:58:36.277 回答