【问题标题】:mysqli execute() executing successfully but is not fetching the records [duplicate]mysqli execute() 成功执行但未获取记录[重复]
【发布时间】: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@

我做错了什么..?

【问题讨论】:

    标签: php mysqli


    【解决方案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 检查新的编辑。
      • 非常感谢它现在的工作......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多