1

我正在使用 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() 工作正常,但无法获取记录...该表中有大量数据...它显示“查询已成功执行但未获取结果”以及之后Fatal error: Call to undefined method mysqli_stmt::get_result()

我究竟做错了什么 .. ?

4

2 回答 2

3

打破以下

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.

您需要按照此处的指南安装/配置它。

于 2013-03-26T09:58:53.163 回答
0

我究竟做错了什么 .. ?

您正在使用 mysqli 而不是PDO

整个代码可以使用 PDO 在这几行中重写:

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

没有所有这些无数ifecho
当您从准备好的语句开始时,差异会更大

于 2013-03-26T10:13:11.237 回答