我的 SQL 语法真的错了吗?


Is my SQL syntax really wrong?

这是我用来在数据库中插入值$id$str$name的代码:

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

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

尝试在查询词之间添加空格,并确保对输入进行转义

$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');");

或者更好的是 - 看看MySQLi或PDO并使用预准备语句。

只要输入变量正确转义,您的代码在表面上看起来不错。试试这个,这样你可以看到你正在执行的语句:

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

检查您的变量是否不包含撇号,例如"Daisy O'Donnel"(这将表明您没有正确转义它们)。