3

我正在尝试在 INSERT SQL 语句中使用 PHP 变量。我已经看到了以前的答案,但无法让我的工作。这是代码..

mysql_query("INSERT INTO message (message_id, from, content) values ('', " . $uid . ", 'test message content')");
4

3 回答 3

10

主要问题是这from是一个保留字,应该在反引号中。

mysql_query("INSERT INTO message (message_id, `from`, content) VALUES ...");

但我也建议您停止使用已弃用的mysql_*功能。我建议您查看 PDO 和带参数的预处理语句。

于 2012-07-31T15:55:53.827 回答
0

如果 message_id 是主键,除非您有值,否则您不需要将其包含在查询中。

mysql_query("INSERT INTO message (`from`, `content`) values (" . $uid . ", 'test message content')");
于 2012-07-31T15:56:54.467 回答
0

您的查询中至少存在三个问题。其中两个是语法错误,一个是巨大的漏洞。

要使查询工作,您应该将其编写如下:

mysql_query("INSERT INTO message (message_id, `from`, content) values ('', '" . $uid . "', 'test message content')");`

以下是错误摘要:
- 正如另一位用户所指出的,“from”是一个关键字,您不应该使用它来命名表列。如果你真的想使用这样的名字,你必须在查询中使用反引号来表示它。
- $uid 的值应该用单引号括起来。
- 第三个也是最重要的错误是您的查询容易受到SQL Injection的攻击。您应该使用准备好的语句,这将保护您免受此类攻击。

于 2012-07-31T15:58:23.433 回答