我一直在互联网上寻找以下错误的解决方案;
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'primary, username, password, password2) VALUES (null, 'hello', 'hello', 'hello')' at line 1"
我不知道发生了什么......我知道你会问我的代码是什么:
$con = mysql_connect("localhost","root","*****");
if (!$con)
{
die('Server overload, please try again' . mysql_error());
}
mysql_select_db("users", $con);
$sql = "INSERT INTO details (primary, username, password, password2) VALUES (null, '$_POST[username]', '$_POST[password]', '$_POST[password2]')";
if (!mysql_query($sql,$con))
{
die('Error: Server overload, try again' . mysql_error());
}
echo "You have signed up successfully!";
mysql_close($con);
我一直试图弄清楚大约4/5小时,但没有成功。
谢谢,
劳伦斯
答案 0 :(得分:7)
primary
是reserved keyword,这意味着您应该:
这是第二种情况下查询的样子:
INSERT INTO details (`primary`, `username`, `password`, `password2`)
VALUES (null, 'hello', 'hello', 'hello')
注意:您应该使用mysql_real_escape_string
来转义您的值,以避免SQL Injections!
答案 1 :(得分:2)
尽量不要使用相对常见的名称(如主要和详细信息)来命名表或列。
虽然它们可能不是您当前使用的SQL风格的保留字,但您永远不知道何时可能支持其他类型(Postgres,Oracle等)。
你也可以使用这个方便的花花公子reserved word checker。
后续问题:
我想知道是谁写了你得到的错误陈述,基本上是 RTM ?热闹。我将在下一次尝试中使用它。 :)
答案 2 :(得分:1)
主要是保留字。表定义是什么?
答案 3 :(得分:1)
我将第一列重命名为其他内容:“primary”是MySQL中的保留字: