2012-08-15 63 views
-7

这是我使用插入值$id,在数据库中$str$name代码:我的SQL语法真的错了吗?

$r=mysql_query("INSERT INTO varta(id,data,name) VALUES('$id','$str','$name');"); 

,但我得到了上述语句的语法错误。这是为什么?我的语法真的错了吗?

+8

你会得到什么错误? – 2012-08-15 12:51:07

+0

不可能知道没有变量的值。 – Maerlyn 2012-08-15 12:51:32

+2

*叹*再次SQL注入。 – 2012-08-15 12:58:59

回答

4

尝试增加您的查询词之间的白色空间,并确保你逃脱输入

$id = mysql_real_escape_string($id); 
$str = mysql_real_escape_string($str); 
$name = mysql_real_escape_string($name); 

$r=mysql_query("INSERT INTO varta (id,data,name) VALUES ('$id','$str','$name');"); 

或者更好的是 - 看看MySQLiPDO和使用准备好的语句。

1

只要您的输入变量正确转义,您的代码在面值上看起来就OK了。试试这个,所以你可以看到你正在执行语句:

$s = "INSERT INTO varta (id,data,name) VALUES('$id','$str','$name');"; 
echo $s; 
$r = mysql_query($s); 

检查你的变量不包含撇号,如“菊花奥唐奈”(这将是你已经一个迹象没有正确逃脱)。

+0

好的,你写了整个如何开放滥用的事情,我试图指出他们如何看到错误.. – BugFinder 2012-08-15 12:56:29

+0

BugFinder,一旦遗漏被指出,可以回顾性修复!我现在已经完成了这个工作,用+1来分隔查询,以便能够回显。 – halfer 2012-08-15 15:12:05