[英]Basic SQL Update statement not working in PHP
我正在為一個類開發一個簡單的小型項目-一個模擬數據庫(使用phpMyAdmin構建)以及一個附帶的Web應用程序供用戶輸入,以允許搜索/追加/更新所述數據庫。 搜索和追加工作正常,但更新讓我感到悲傷。
我設置了要顯示的錯誤消息,以幫助調試過程,盡管它們已針對該項目中的先前問題彈出,但並未針對該特定問題出現。
我的代碼如下所示:
$sth = "UPDATE adjunct_number
SET FIRSTNAME = '.$updateInformation.'
WHERE 700NUMBER = '.$updateCriteria.';";
(I tried echoing $sth right here, nothing displayed!)
$sth = $db->prepare($sth);
$sth->execute();
$ updateInformation和$ updateCriteria都已成功從HTML表單的文本框中提取。 (我將Drew和700123456輸入到表單中作為測試數據。)我測試了$ updateInformation和$ updateCriteria實際上是使用以下語句成功捕獲的:
echo $updateInformation . ", " . $updateCriteria
產生以下輸出:
Drew, 700123456
我將在phpMyAdmin中輸入以下查詢以對其進行測試。
UPDATE adjunct_number
SET FIRSTNAME = 'DREW'
WHERE 700NUMBER = 700482306
正如所期望的那樣,它始終可以在phpMyAdmin中正常工作,而且有100%的時間……但是,當我通過PHP發送它時,完全相同的更新命令卻永遠無法工作,這使我非常困惑。 我唯一能想到的是SQl語句中被忽略的PHP拼寫錯誤,但是在這一點上,我一直盯着它看了很長時間,以至於我可以使用新的眼睛! 為什么在我嘗試回顯$ sth時沒有顯示sql語句? 來自這個美好社區的任何見解將不勝感激。
您需要學習基本的PHP字符串:
$sth = "UPDATE adjunct_number
^---start of PHP string
SET FIRSTNAME = '.$updateInformation.'
WHERE 700NUMBER = '.$updateCriteria.';";
^---end of PHP string
這意味着您的查詢正在執行... SET FIRSTNAME = '.foo.' ...
... SET FIRSTNAME = '.foo.' ...
,與.
完全嵌入查詢中。 這意味着您的where
子句將永遠不匹配任何記錄。
由於您使用"
的報價,你不需要使用.
在所有:
$sth = "UPDATE adjunct_number
SET FIRSTNAME = '$updateInformation'
WHERE 700NUMBER = '$updateCriteria';";
或者您應該先正確退出該字符串:
$sth = "UPDATE adjunct_number
SET FIRSTNAME = '" . $updateInformation . "'
WHERE 700NUMBER = '" . $updateCriteria . "';";
您混合了單引號和雙引號。 將其更新為以下內容:
$sth = "UPDATE adjunct_number
SET FIRSTNAME = ".$updateInformation."
WHERE 700NUMBER = ".$updateCriteria.";
也許您可以嘗試使用符號(“`”)反引號作為列名和表
UPDATE `adjunct_number`
SET `FIRSTNAME` = 'DREW'
WHERE `700NUMBER` = 700482306
;
在您的查詢中。 您不在互動環節 這是您的建議。
$query = "UPDATE adjunct_number SET FIRSTNAME = ? WHERE 700NUMBER = ?";
$sth = $db->prepare($query);
$sth->execute( array( $updateInformation, $updateCriteria ) );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.