2011-11-09 185 views
1

我的功能得到$status(0誤差,1 - 成功),$err_id$field(輸入字段的名稱)(單位爲dB的錯誤消息的ID)變量,並獲取從數據庫中的錯誤信息,給定瓦爾。與MySQL查詢有問題

嘗試die()在每個步驟中檢測到發生錯誤的位置,同時在函數err之後再放置die($status.$err_id.$field);。沒有成功。

刪除netbeans。標記調試停止的功能行

$ msg始終爲空。無法從數據庫中獲取它。在php錯誤日誌中沒有錯誤。可能是我的代碼有錯誤?請看一下。

function err($status, $err_id = 0, $field = 0) 
{ 
     global $db; 
     if ($status == 0) { 
       $stmt = $db->prepare("SELECT msg FROM err_msgs WHERE field = ? AND id= ?") or die(htmlspecialchars($db->error)); 
       $stmt->bind_param("si", $field, $err_id) or die(htmlspecialchars($stmt->error)); 
       $stmt->execute() or die(htmlspecialchars($stmt->error)); 
       $stmt->bind_result($msg) or die(htmlspecialchars($stmt->error)); 

       >>debug stops here>> $stmt->fetch() or die(htmlspecialchars($stmt->error)); 

       response('error', $msg); 
       $stmt->close(); 
       die(); 

     } else { 
       response('success', 'Success!'); 

     } 

} 
+0

檢查Apache的錯誤日誌後才能獲取?在它有機會記錄任何東西之前,可能會殺死php。 –

+0

@MarcB你有任何IM嗎?我的Skype:tural.teyyuboglu。請添加我,以便我們可以與您聊天。我頭痛,無法工作。嘗試了所有可能的方法,只需要另一對開發人員的眼睛從另一個角度查看 –

+0

的代碼。對不起,apache錯誤日誌是我能想到的所有東西。沒有任何類型的錯誤信息,診斷幾乎是不可能的。 –

回答

0

我忘結合的結果

$stmt->fetch() 
0

嘗試切換兩行:

$stmt->execute() or die(htmlspecialchars($stmt->error)); 
$stmt->bind_result($msg) or die(htmlspecialchars($stmt->error)); 

$stmt->bind_result($msg) or die(htmlspecialchars($stmt->error)); 
$stmt->execute() or die(htmlspecialchars($stmt->error)); 
+1

「請注意,在調用mysqli_stmt_fetch()之前,必須在mysqli_stmt_execute()之後綁定所有列。」請參閱http://www.php.net/manual/en/mysqli-stmt.bind-result.php –

+0

上的文檔我在我的網站論壇上進行了一些測試,這兩種方式都可以在執行前後使用bind_result進行。我可以發誓,我記得不得不將它從之後切換到之前才能使其工作...... – Frank