2013-03-26 75 views
1

我使用的mysqli执行select查询...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()

我在做什么错误..?

回答

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进行安装/配置。

+0

尝试过但没有变化。 – alwaysLearn 2013-03-26 10:02:55

+0

@new_developer检查新的编辑。 – hjpotter92 2013-03-26 10:07:32

+0

非常感谢现在的工作...... – alwaysLearn 2013-03-26 10:13:43

0

我在做什么错误..?

您使用的mysqli替代PDO

所有代码可以使用PDO的这几行被改写:

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

没有所有这些众多ifecho
当您准备好的语句开始时差异会更大