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

时间:2013-03-26 09:53:01

标签: php mysqli

我正在使用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()工作正常但无法获取记录...表中有大量数据...它显示“查询已成功执行但没有结果获取”及其后{ {1}}

我做错了什么..?

2 个答案:

答案 0 :(得分: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

您需要按照guidelines here

安装/配置它

答案 1 :(得分:0)

  

我做错了什么..?

您正在使用mysqli而不是PDO

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

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

没有这么多ifecho 当你从准备好的陈述开始时,差异会更大