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

Php 检查是否在PDO中执行了SQL查询,php,pdo,Php,Pdo,在mysql_查询中,我们可以通过执行以下操作来检查查询是否已执行: $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 *

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

$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}
$dbh = new PDO('mysql:host=localhost;dbname=db', 'user', 'pass');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
<?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 */
}
?>
我的代码有效吗?
if
语句到底在做什么?它做的事情和mysql\u query做的事情一样吗?如何检查查询是否返回0行

[编辑]

我已经找到了解决问题的办法

  • 使用
    $stmt->fetch()

    准备($sql); $stmt->execute();
    if($data=$stmt->fetch()){
    做{
    echo$data['model'].
    ; }而($data=$stmt->fetch()); }否则{ 回显“空查询”;}
    ?>
  • 添加另一个查询以计算行数请参见


  • 然而,我仍在寻找更好的解决方案

    你的帖子中有两个问题

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

    检查返回值

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

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


    顺便说一句,对于
    “SELECT*FROM tbl_name”
    查询,您可能希望使用
    fetchAll()
    而不是
    fetch()
    ,来查看您的查询是否执行,我建议您按照常识将PDO设置为异常模式。您可以这样做:

    $query = $yourdbconnection->query("SELECT * FROM tbl_name");
    $fetchquery = $query->fetchAll();
    if ($fetchquery) { // query is working}
    else { // query not working}
    
    $dbh = new PDO('mysql:host=localhost;dbname=db', 'user', 'pass');
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    <?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 */
    }
    ?>
    
    关于检查查询是否在PDO中返回值的最佳方法,我建议只执行一个
    SELECT COUNT(*)FROM table
    查询,如下所示:

    $query = $yourdbconnection->query("SELECT * FROM tbl_name");
    $fetchquery = $query->fetchAll();
    if ($fetchquery) { // query is working}
    else { // query not working}
    
    $dbh = new PDO('mysql:host=localhost;dbname=db', 'user', 'pass');
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    <?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 */
    }
    ?>
    
    
    

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

    “我的代码可以执行任务吗?”您的代码可以执行任务吗?我不知道,请告诉我!这不是一种检查SELECT查询结果数量的可移植方法。事实上,我没有注意到这一点。我想我学到了一些东西。然后我建议从表中执行一个
    selectcount(*)查询,如果计数>0,则执行您的常规查询。我会更新我的答案。