2014-01-21 52 views
0

好吧,我有一個查詢更新表,它只適用於當我刪除更新的組部分,沒有這個工作正常。如何在查詢中使用保留關鍵字

所以我明白組可能是一個保留的關鍵字,我已經試過把它放置像[group]但仍然無法工作。

當我回聲出查詢我得到:

UPDATE users SET username='superman', dob='0000-00-00', location='The Daily Planet ', group='2' WHERE id='136' 

它只是劑量不插入到數據庫中。 劑量任何一個知道我如何能得到這個工作?

完整的PHP代碼INC查詢:

require 'core/init.php'; 
$username = mysql_real_escape_string($_POST["username"]); 
$dob = mysql_real_escape_string($_POST["dob"]); 
$location = mysql_real_escape_string($_POST["location"]); 
$group = mysql_real_escape_string($_POST["group"]); 
$user_id = (int)$_POST['id']; 

    $result = mysql_query("UPDATE users 
       SET username='$username', 
        dob='$dob', 
        location='$location', 
        group='$group' 
       WHERE 
       id=$user_id"); 

    header("location:admin.php"); 

回答

3

使用反引號`任何reserved word。更好的是對任何列名稱,表名等使用反引號。

UPDATE `users` 
SET `username` = '$username', `dob` = '$dob',`location` = '$location',`group` = '$group' 
WHERE `id` = $user_id 
+0

哇,這麼簡單。非常感謝你,我不知道。 – Beep

+0

呃。最好的解決方案是不使用保留字作爲標識符。在所有標識符上使用反引號只是查詢混亂。 –

1

的方括號([])在Microsoft SQL Server和作爲轉義字符Access使用。在MySQL中使用反引號。標準字符是雙引號,這似乎適用於幾乎所有其他數據庫。

您應該警告不要在數據庫中使用保留字作爲名稱。尤其是保留字是基本SQL語法的一部分。例如:

select "group", count("group") 
from t 
group by "group" 

可能很難閱讀。

最後,我想你應該只逃脫實際保留字,不是一切:

 UPDATE users 
      SET username = '$username', 
       dob = '$dob', 
       location = '$location', 
       "group" = '$group' 
      WHERE id = $user_id 
+0

謝謝大量的信息,我可以從中學習,我沒有意識到括號只是ms sql。很棒的信息+1 – Beep

相關問題