mysqli execute() 成功执行但未获取记录[重复]

Posted

技术标签:

【中文标题】mysqli execute() 成功执行但未获取记录[重复]【英文标题】:mysqli execute() executing successfully but is not fetching the records [duplicate] 【发布时间】:2013-03-16 01:34:56 【问题描述】:

我正在使用 mysqli 执行选择查询 ...

/** ------------  queries ----------      **/
        $stmt = $mysqli->prepare("SELECT * FROM dept");

        if(! $stmt)
        
            echo "statement not prepared well";
        
        else
        
            echo $mysqli->error;
        

        if (!$stmt->execute()) 
         echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
    
 // add else
 else
  echo "Query is successfully executed but no result fetch";
   

        if (!($res = $stmt->get_result())) 
            echo "Getting result set failed: (" . $stmt->errno . ") " . $stmt->error;
        
        /** ------------------------------- **/

        #------result ----
        var_dump($res->fetch_all());
        #---------(/result)----

我的问题是 execute() 工作正常,但无法获取记录...该表中有大量数据...它显示“查询已成功执行但未获取结果”,然后@ 987654322@

我做错了什么..?

【问题讨论】:

【参考方案1】:

我做错了什么..?

您使用的是 mysqli 而不是 PDO

您的整个代码可以使用 PDO 用这几行代码重写:

$stmt = $pdo->prepare("SELECT * FROM dept");
$stmt->execute();
var_dump($stmt->fetchall());

没有那么多ifecho。 当您从准备好的语句开始时,差异会更大

【讨论】:

【参考方案2】:

打破以下

if (!($res = $stmt->get_result())) 

$res = $stmt->get_result();
if( !$res ) 

或者说是

$res = $stmt->get_result();
if( $res->num_rows == 0 ) 

错误(我之前没有注意到)是因为

mysqli_stmt::get_result() 仅适用于 mysqlnd

您需要按照guidelines here 安装/配置它。

【讨论】:

试过但没有改变.. @new_developer 检查新的编辑。 非常感谢它现在的工作......

以上是关于mysqli execute() 成功执行但未获取记录[重复]的主要内容,如果未能解决你的问题,请参考以下文章

尝试从 .NET 3.5 获取异常代码但未成功

从 mysqli_query 获取成功/失败响应

mysqli_stmt 类的对象在执行时无法转换为字符串

关于Alwayson创建维护计划后,备份执行成功但未看到备份文件的原因

[dagster管道在使用`execute_pipeline`运行时成功执行,但在使用dagit运行时未成功执行

MySQLi PHP:使用 MySQLi 检查 SQL INSERT 查询是不是完全成功