2

我遇到了 SQL 问题。

此 SQL 语句:

SELECT * from chat WHERE id=16

输出:

数组([id] => 16 [from] => 5 [to] => 6 [message] => Example Message [time] => 1337674546)

以下 SQL 语句:

SELECT * from chat WHERE from=5

输出错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“from=5”附近使用正确的语法

如您所见,第二条语句应该返回相同的结果,但事实并非如此。

我正在使用新安装的 XAMPP,其中包括:
Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
MySQL 客户端版本:mysqlnd 5.0 .8-dev - 20102224 - $修订版:310735 $

似乎我在这里遗漏了一些明显的东西,但我无法弄清楚发生了什么。

4

5 回答 5

1

将第二个查询更改为:

SELECT * from chat WHERE `from`=5

from 是一个保留关键字,您应该始终避免使用或至少使用引号来使其工作。

于 2012-05-22T09:05:13.037 回答
0

formMY SQL 中的保留关键字一样,您需要使用反引号来转义。

 SELECT * FROM chat WHERE `from`=5;
于 2012-05-22T09:11:15.823 回答
0

from是 MySQL 中的关键字,因此您需要对关键字进行转义。因此,MySQL 可以将其视为列名。使用 `` 转义关键字。

你可以试试这个。

SELECT * from chat WHERE `from`=5;
于 2012-05-22T09:05:23.393 回答
0

当您使用该单词from作为字段名称时,您需要在反引号中对其进行转义,因为它是一个保留字。

这是整个 SQL 转义和大写:

SELECT * FROM `chat` WHERE `from` = 5
于 2012-05-22T09:05:58.650 回答
0
SELECT * FROM `chat` WHERE `from`='5'
于 2012-05-22T09:09:12.270 回答