簡體   English   中英

失敗,mysqli prepare語句沒有錯誤

[英]fail with no error with mysqli prepare statement

我在一個小的php腳本中有這些行:

    $sql = "UPDATE activation SET end = NOW(), deactivated_by = ? WHERE id=?;";
    $stmt = $mysqli->prepare($sql);
    if(!$stmt) {die('prepare4 failed: ' . htmlspecialchars($mysqli->error));}

但是我得到這個結果沒有錯誤也沒有響應,也沒有apache error.log ...

prepare4 failed:

任何想法發生了什么,或如何獲得更多有關此的信息?

編輯

if (!$stmt) {
    die('prepare4 failed: ' .$mysqli->errno."----"  . $mysqli->error);
}

返回prepare4 failed: 0------

我們可以排除htmlspecialchars中的問題

編輯2

好的,我發現了如何使用以下命令啟用mysql報告:

$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ALL;

現在,我使Commands out of sync; you can't run this command now Commands out of sync; you can't run this command now

不過我不知道為什么。 但是至少我現在有事要照顧。

您可以使用$mysqli->error獲取更多錯誤信息。

 if (!$stmt) {
    die('prepare4 failed: ' .$mysqli->errno."----"  . $mysqli->error);
}

為了解決錯誤消息未顯示的事實,我添加了:

$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT;

在創建我的mysqli對象之后。 這樣,我就在發生mysql錯誤時提出問題。

我收到的錯誤是“命令不同步;您現在不能運行此命令”,這表明我在關閉前一條語句之前試圖創建一條新語句。

缺少$stmt->close(); 在調用mysqli->prepare()

嘗試刪除查詢字符串中的終止分號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM