2011-08-25 84 views
1

我不能爲我的生活找出爲什麼這是行不通的。每當它拋出了一個錯誤:不添加到數據庫

$GROUPCREATE = $_POST['GROUPCREATE']; 
$USER = $_POST['USER']; 
mysql_connect ("localhost", "XXXX", "XXXX") or die ('Error: ' . mysql_error()); 
mysql_select_db ("XXXX"); 
$query="INSERT INTO contacts_groups (id, GROUP, USER)VALUES ('NULL','".$GROUPCREATE."','".$USER."')"; 
mysql_query($query) or die ('Error updating database' . mysql_error()); 
header('Location: add_done.php') ; 

我得到以下錯誤: 您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊,在第一行使用'GROUP','USER'VALUES('NULL','組名'出來!代碼看起來沒問題,並且與我在另一個(完全工作)表單上使用的代碼非常相似。

回答

3

GROUP是mysql中的保留字。你將不得不「逃離」它反引號:

INSERT INTO contacts_groups (id, `GROUP`, USER) ... 

你的代碼也容易受到SQL注入,所以最好採取照顧。

+0

+1提到的安全問題。 – JJJ

1

因爲GROUP是MySQL中的保留字(GROUP BY)。你應該改變你的領域加引號的名字就像``。

1

GROUP得到它們的列表是一個MySQL保留關鍵字,所以它是打破你的查詢。你需要逃避它帶回蜱像這樣:

`GROUP` 

MySQL Reserved Words手冊頁。

所以,你的代碼應該是這樣的:

$query="INSERT INTO `contacts_groups` (`id`, `GROUP`, `USER`) 
     VALUES ('NULL','$GROUPCREATE','$USER')"; 

您還會注意到我已經刪除了你在查詢了不必要的字符串連接。

您應該小心將您的SQL查詢放入什麼位置,以防止發生SQL注入。作爲最低限度你應該運行您的查詢之前如下:

$GROUPCREATE = mysql_real_escape_string($GROUPCREATE); 

上的所有PHP變量,你要拖放到您的查詢。

理想情況下,您將使用PHPs PDO classes並使用佔位符,以便您的數據/變量自動轉義。