Mysqli execute()执行成功,但没有获取记录


mysqli execute() executing successfully but is not fetching the records

我正在使用mysqli执行select查询…

/** ------------  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()工作正常,但无法获取记录…这个表中有大量的数据。它显示"查询已成功执行,但未获取结果",之后是Fatal error: Call to undefined method mysqli_stmt::get_result()

我做错了什么…div ?

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 有效。

您需要按照这里的指导原则安装/配置它

我做错了什么… ?

你正在使用mysqli而不是PDO

整个代码可以用PDO重写成这几行:

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

没有这些大量的ifecho
当你以预处理语句

开始时,差异会更大