首页 文章

检查是否在PDO中执行了SQL查询[重复]

提问于
浏览
-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行?

[EDIT]

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

  • 使用 $stmt->fetch()
    准备($的SQL); $ stmt->执行();
if ($data = $stmt->fetch()) {
    do {
        echo $data['model'] . '<br>';
    } while ($data = $stmt->fetch());
} else {
    echo 'Empty Query';}

?>

  • 添加另一个查询来计算行数,请参阅this answer

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

2 回答

  • -1

    要查看您的查询是否已执行,我建议您将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 */
    }
    ?>
    

    如果您有任何其他问题,请与我们联系 .

  • 0

    你的帖子中有2个问题 .

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

    检查返回的值

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

    tag wiki所述,在异常模式下设置PDO

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

相关问题