$pdo=preparedbuser(); $check = $pdo->prepare('UPDATE adress SET city="?", adres="?", number="?", postalcode="?" WHERE id_FK="?"'); $check->bindParam(1, $city, PDO::PARAM_STR); $check->bindParam(2, $adres, PDO::PARAM_STR); $check->bindParam(3, $number, PDO::PARAM_STR); $check->bindParam(4, $postalcode, PDO::PARAM_INT); $check->bindParam(5, $user, PDO::PARAM_INT); $check->execute(); if ($check->rowCount() > 0){ echo'inserito';UPDATE 查詢不起作用。我在查詢中替換的變量是正確的。數據庫設置正確。我的 sql 沒有返回任何錯誤;并嘗試將查詢復制并粘貼到 My sql 面板(進行必要的替換)中。有人能幫我嗎?謝謝
1 回答

交互式愛情
TA貢獻1712條經驗 獲得超3個贊
使用參數時不需要引號:
$check = $pdo->prepare('UPDATE adress SET city=?, adres=?, number=?, postalcode=? WHERE id_FK=?');
數據庫引擎知道類型并將相應地處理它們。使用帶有查詢參數的準備好的語句的主要好處之一是讓數據庫引擎處理它。事實上,您已經告訴 PDO 這些類型是什么:
PDO::PARAM_STR
旁注:郵政編碼不應是整數/數字值,就像您在此處所做的那樣:
$check->bindParam(4, $postalcode, PDO::PARAM_INT);
郵政編碼是一個字符串。在許多國家(例如我居住的美國),郵政編碼是數字字符(雖然在這里它們可能包含 +4 格式的連字符),但在許多國家它們可能是字母數字。很像電話號碼,盡管它看起來像數字,但它仍然是一個字符串。(我懷疑你打算用郵政編碼進行數學計算。截斷前導零可能會有問題。)
- 1 回答
- 0 關注
- 135 瀏覽
添加回答
舉報
0/150
提交
取消