簡體   English   中英

PHP MYSQLI准備的更新語句不起作用?

[英]PHP MYSQLI prepared update statement not working?

不知道為什么這行不通。 我按照完全相同的步驟(即,prepare,bind,execute)在同一數據庫上執行SELECT。 但是由於某種原因,更新不會在數據庫中更新。

這是代碼:

$stmtUpdate = $mysqli->prepare("UPDATE license_keys.$injection_key_text_type 
SET given_date = CURRENT_DATE(), contact_email = ?, given_bool = ?, contact_id = ?    
WHERE key_text_id = ?;";
$stmtUpdate->bind_param("siss",$recipient_email,1,$contact_id,$key_text_id);
$stmtUpdate->execute();
$stmtUpdate->close();

我嘗試過的事情

  • 在if語句中包裝第一行
  • given_date = CURRENT_DATE切換given_date = CURRENT_DATE給定given_date = ? 然后只是在我的綁定參數中添加一個任意字符串,即( $stmtUpdate->bind_param("ssiss","11-8-2014",$recipient_email,1,$contact_id,$key_text_id);
  • 嘗試有無“;” 在聲明的末尾,因為它適用於程序版本,但不適用於面向對象的方式。

另請注意,如果我將其作為程序運行,則效果很好,但是我需要它使用准備好的語句來工作。 這是程序代碼:

$mysqli->query("UPDATE license_keys.$injection_key_text_type 
SET given_date = CURRENT_DATE(), contact_email = '$recipient_email', given_bool = 1, contact_id = '$contact_id' 
WHERE key_text_id = '$key_text_id';");

基於變量名,對我來說,您需要這些占位符中的幾個作為整數,而不是字符串(如果它們實際上是INT

$stmtUpdate->bind_param("siii",$recipient_email,1,$contact_id,$key_text_id);

出於調試目的,我建議您這樣做。 $mysqli將是您的數據庫連接。 希望它能使您了解問題所在。

if (!($stmtUpdate = $mysqli->prepare("UPDATE license_keys.$injection_key_text_type 
SET given_date = CURRENT_DATE(), contact_email = ?, given_bool = ?, contact_id = ?    
WHERE key_text_id = ?")) {
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
    exit;
}

if (!$stmtUpdate->bind_param("sisi",$recipient_email,1,$contact_id,$key_text_id)) {
    echo "Binding parameters failed: (" . $stmtUpdate->errno . ") " . $stmtUpdate->error;
    exit;
}

if (!$stmtUpdate->execute();) {
    echo "Execute failed: (" . $stmtUpdate->errno . ") " . $stmtUpdate->error;
    exit;
}

暫無
暫無

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

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