我正在尝试在 INSERT SQL 语句中使用 PHP 变量。我已经看到了以前的答案,但无法让我的工作。这是代码..
mysql_query("INSERT INTO message (message_id, from, content) values ('', " . $uid . ", 'test message content')");
主要问题是这from
是一个保留字,应该在反引号中。
mysql_query("INSERT INTO message (message_id, `from`, content) VALUES ...");
但我也建议您停止使用已弃用的mysql_*
功能。我建议您查看 PDO 和带参数的预处理语句。
如果 message_id 是主键,除非您有值,否则您不需要将其包含在查询中。
mysql_query("INSERT INTO message (`from`, `content`) values (" . $uid . ", 'test message content')");
您的查询中至少存在三个问题。其中两个是语法错误,一个是巨大的漏洞。
要使查询工作,您应该将其编写如下:
mysql_query("INSERT INTO message (message_id, `from`, content) values ('', '" . $uid . "', 'test message content')");`
以下是错误摘要:
- 正如另一位用户所指出的,“from”是一个关键字,您不应该使用它来命名表列。如果你真的想使用这样的名字,你必须在查询中使用反引号来表示它。
- $uid 的值应该用单引号括起来。
- 第三个也是最重要的错误是您的查询容易受到SQL Injection的攻击。您应该使用准备好的语句,这将保护您免受此类攻击。