2012-08-30 56 views
2

我想使用PDO準備語句更新我的表中的一個表中的單個元素,並出於某種原因,它不工作。我正在使用try-and-catch,並且我沒有收到系統中的錯誤。我也迴應了我的兩個綁定參數,他們都在系統中註冊,所以我不知道爲什麼它沒有經過。我在另一個腳本中使用了與此非常相似的查詢,並且一切正常。PHP PDO不更新表並生成沒有錯誤

if($_POST['check_request'] == "Yes"){ 
    $check_amnt = $_POST['check_amnt']; 
    try { 
     $STH = $DBH->prepare('UPDATE accounts SET check = :check_amnt WHERE accnt = :user'); 
     $STH->bindParam(':check_amnt', $check_amnt); 
     $STH->bindParam(':user', $ulog); 
     $STH->execute(); 
    } 
    catch(PDOException $e) { 
     echo "Check Input Error: " .$e->getMessage(). "</br>"; 
    } 
} 
+1

此代碼的PDO部分看起來沒問題。檢查變量是否設置正確,p.e. '$ _POST ['check_request']','$ check_amnt'和'$ ulog'。 – Bjoern

+0

每個變量都被檢查過,它們都在系統中註冊。 – user1562781

+0

然後在'$ STH-> execute()'後面做一個'die'('Hello!');'或者類似的東西來看代碼真的到達那裏。 – Bjoern

回答

3

你有沒有設置例外模式PDO有:

$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

更新: check是MySQL的保留字,你需要逃避它。

$STH = $DBH->prepare('UPDATE accounts SET `check` = :check_amnt WHERE accnt = :user'); 
+0

這是完美的。我現在收到錯誤。這是我得到的錯誤,但我不知道爲什麼語法錯誤。有什麼建議麼?錯誤:SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法中有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在'check ='40'附近使用正確的語法WHERE accnt ='admin''在第1行 – user1562781

+0

@ user1562781查看我的更新。 – xdazz

+0

你是個天才。我什至沒有抓到那個。謝謝! – user1562781