2014-02-22 63 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();