簡體   English   中英

基本的SQL Update語句不適用於PHP

[英]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
  • 不需要; 在您的查詢中。 您不在互動環節
  • 您需要進行SQL注入。
  • 參數化查詢無需引用。

這是您的建議。

$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.

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