-2
我一直在使用準備好的語句很好,現在沒有問題,但今天當我試圖從準備好的語句調用MySQL函數我得到以下內容:PHP準備好的聲明失敗時調用MySQL函數
Fatal error: Call to a member function fetch_array() on boolean in DB.php on line 336
這是我使用的代碼並沒有什麼不同,我平時SELECT
,UPDATE
或DELETE
querys,我也沒有任何問題調用程序,我的程序授予均未返回任何值。
$sql = "SELECT FN_MAINTAIN_ASSET(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) AS assetId;";
try {
$conn = $this->open();
$stmt = $conn->prepare($sql);
if($stmt === false) {
trigger_error(sprintf($txt["error_sql"], $conn->error), E_USER_ERROR);
}
$stmt->bind_param('iiiisssbbiiiis', $modify, $type, $category, $year, $title, $description, $imageFilename, $imageMain, $imageThumbnail, $membersOnlyView, $privateView, $status, $memberId, $createdIp);
$stmt->execute();
$rs = $stmt->get_result();
$result = $rs->fetch_array(MYSQL_ASSOC); // Line 336
$rs->free();
$stmt->close();
$this->close($conn);
} catch (Exception $e) {
$logObj->error($e->getMessage());
}
$rs
只是線336,從$stmt
沒有錯誤消息之前是空的。
如果有人有任何建議或想法,非常感謝。
在執行下一條指令之前檢查'$ rs'的值 – Hackerman
您是否明確啓用了異常?如果沒有,那麼try/catch就沒用了,因爲mysqi/pdo默認通過返回boolean false來失敗,而不是拋出異常。要麼打開異常,要麼開始顯式檢查返回值。 –