此查询有效:
$con = mysql_connect("localhost","root","pw");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("db", $con);
$sql="INSERT INTO l1_clubmsg (msg, subject, status)
VALUES
(1,1,1)";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con);
但是当我改变时:
$sql="INSERT INTO l1_clubmsg (msg, subject, status)
VALUES
(1,1,1)";
要:
$sql="INSERT INTO l1_clubmsg (msg, subject, status, to)
VALUES
(1,1,1,1)";
我收到此错误:
Error: 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 'to) VALUES (1,1,1,1)' at line 1
'to'列确实存在于l1_clubmsg
中为什么会出现错误?谢谢
答案 0 :(得分:5)
TO
是mysql中的保留字,因此如果要将其用作列名,则需要将其转义为;
INSERT INTO l1_clubmsg (msg, subject, status, `to`) VALUES (1,1,1,1)
通常最好转义所有列和表名,因为较新版本的数据库可能有新的保留字,但在这种情况下只需要一个。
答案 1 :(得分:4)
这不是因为产生错误的4列或更多列。
产生错误是因为to
是一个关键字,不能像这样使用。
您可以将查询编写为:
$sql="INSERT INTO l1_clubmsg (msg, subject, status, `to`)
VALUES
(1,1,1,1)";
对于您可以查看的关键字列表here
注意:通常会尝试避免查询中的关键字。如果你使用,请确保使用反引号(`)
来逃避它答案 2 :(得分:2)
TO
是MySQL中的保留字。您将不得不在查询中转义它。尝试
$sql="INSERT INTO l1_clubmsg (msg, subject, status, `to`)
VALUES
(1,1,1,1)";
我添加的标点符号被称为反引号。
答案 3 :(得分:1)
我怀疑to
是MySQL中的保留工作 - 您需要确保MySQL正确解释为列名。而不是:
INSERT INTO l1_clubmsg (msg, subject, status, to)
VALUES
(1,1,1,1)
尝试:
INSERT INTO l1_clubmsg (`msg`, `subject`, `status`, `to`)
VALUES
(1,1,1,1)
反引号确保它被正确解析。
答案 4 :(得分:1)
您必须在TO
附近加上引号。