2014-02-22 124 views
0

我有以下PHP編寫的代碼:錯誤在SQL INSERT INTO查詢

$q = mysql_query("INSERT INTO logowania ('user','udane','ip') VALUES ($uid,0,'".ip()."')"); echo mysql_error(); 

$uidip()值是正確的,你可以信任我。 logowania

結構:

1 idlogowania  int(11)    

2 user int(11) 

3 udane tinyint(1) 

4 data timestamp  on update CURRENT_TIMESTAMP  CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  

5 ip text utf8_polish_ci 

我不知道哪裏是語句中的錯誤。 MySQL給出:

你的SQL語法有錯誤;檢查 對應於你的MySQL服務器版本正確的語法在行中使用 附近'用戶」,‘udane’,‘IP’)VALUES(1,0,79年.184.7.44‘)’手動1

我試圖調試,但沒有成功結束。我知道這可能是一個非常簡單的錯誤,但是人類的視力並不是絕對可靠的......

+0

使用'mysqli_'函數族(和準備語句)而不是使用過時的'mysql_'和構建que 「手工」。 – Vyktor

+0

@Vyktor我在查詢之前使用了'mysql_real_escape_string()'函數。我很抱歉,但我討厭'mysqli_' .... – TN888

回答

1

對列名稱使用後退標記,否則它們被視爲字符串。

(`user`,`udane`,`ip`) 
+0

你是第一個,所以我會接受你的回答:-)。現在一切正常。謝謝你的幫助,這是一個愚蠢的錯誤...... :-( – TN888

1

從列名取出''。

$q = mysql_query("INSERT INTO logowania ('user','udane','ip') VALUES ($uid,0,'".ip()."')"); echo mysql_error(); 

應該

$q = mysql_query("INSERT INTO logowania (user,udane,ip) VALUES ($uid,0,'".ip()."')"); echo mysql_error(); 

,或者使用回抽動的山坳名

$q = mysql_query("INSERT INTO logowania (`user`,`udane`,`ip`) VALUES ($uid,0,'".ip()."')"); echo mysql_error(); 
+0

你不是第一個,但感謝你的幫助,現在一切正常,謝謝你的幫助,那是一個愚蠢的錯誤... :-( – TN888

+1

這很好,我們學習的錯誤:-) –

0

替代版本:

$q = mysql_query("INSERT INTO logowania SET `user` = '" . $uid . "', `udane` = 0, `ip` = '" . ip() . "'"); echo mysql_error();