提问者:小点点

mysql-insert INTO表示“to”=“$USER2”[duplicate]的语法很差


$time=date("G:i:s j.n.Y");
$wholetime="$time";
mysql_query("INSERT INTO rivase_chat_posts SET sender='$user', content='$msg', time='$wholetime', 'to'='$affectuser'");
$msg="";

我在做私人聊天的事。那是我的密码。将导致以下错误:

您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,了解第1行“to”='gs'附近使用的正确语法
($user=“gskartwii”,$msg=“hi”,$affectuser='gs')


共2个答案

匿名用户

对于列名,请使用反勾号而不是单引号:

`to`='$affectuser'

单引号仅用于字符串。在MySQL中,背勾(通常在键盘上数字1的左边)是用于列或表名的东西。

编辑:正如Michael Berkowski正确指出的那样,您必须为列名这样做的原因是因为to是mysql中的保留词--这是一种很好的说法,即它是mysql认为的特殊词,通常在查询中表示某种意思。在这一点上,使用保留字作为表中的列可能并不是最好的主意--在使用它们的每个实例中都必须对它们进行反勾。您可能需要考虑将其重命名为touser,这样可能会使项目的其余部分更易于SQL输出:)

匿名用户

您将“to”放在单引号之间。列名不加引号,或在后引号之间加引号。单引号用于字符串。您无法更新字符串,因此set'to'='user'是一个错误。

INSERT INTO rivase_chat_posts 
SET `sender`='$user', `content`='$msg', `time`='$wholetime', `to`='$affectuser'

更新:注释说to是一个保留字,应该总是转义--使用后引号。

相关问题