2013-03-26 79 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
當您準備好的語句開始時差異會更大