$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'(
对于列名,请使用反引号而不是单引号:
`to`='$affectuser'
单引号仅适用于字符串。反引号(通常在键盘上数字 1 的左侧(是用于 mysql 中的列名或表名的东西。
编辑:正如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
是一个保留字,应该始终使用反引号进行转义。
To
是一个保留字。逃脱它:
INSERT INTO rivase_chat_posts
SET sender='$user', content='$msg', time='$wholetime', `to` ='$affectuser'