我在mysql中遇到了一个查询示例:
SELECT `id`, `food`, `calories`, `healthy_unhealthy` FROM `food` WHERE 1 //works在Codelobster中输入它,它会像这样出现:
$query = "SELECT 'id', 'food', 'calories', 'healthy_unhealthy' FROM 'food'"; //fails撇号是不同的。它失败的原因是:
您的SQL语法出现错误;请检查与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在行处使用“食品”。
如果我把能工作的那个放到$query中,它就能工作了。
$query = "SELECT `id`, `food`, `calories`, `healthy_unhealthy` FROM `food`"; //works如果在php编辑器上这样做,则撇号不起作用,因为它是不同的。只是这一变化本身就使它无法奏效。在php编辑器中,是否有用于该样式的键或设置?
发布于 2013-11-25 17:52:38
反勾符是mysql语法,用于包装表名,并将表显式标识为表名。常规单引号用于普通字符串分隔符。不同的是,例如
`id`同时引用一列
'id'
只是一根绳子。或者,您可以不对列名或表名使用回勾,只要它们不是mysql保留的单词(无论如何都不应该这样做)。
例如,如果在名为foo的表中有一个名为bar的列,则可以这样做
$sql = "select `foo` from `bar`"; 或
$sql = "select foo from bar";但是,如果您有一个名为count的列,则必须将其包装在backticks中,因为count是mysql中的一个保留字:
$sql = "select `count` from bar"; 正如前面提到的,您不应该将您的列或表命名为保留词。这是个糟糕的练习。虽然mysql允许这样做,但是不是所有的数据库都支持这一点,所以它会降低查询的可移植性。
发布于 2013-11-25 17:52:50
‘被称为反引号,它们之间的任何解释都是100%的字面意思。这实际上允许您拥有具有语法意义的字符,这些字符实际上用作表名或db名称(除其他外)。虽然在表名等中使用具有语法意义的字符是不好的做法,但是自动化程序必须考虑到这一点,因此必须将所有表名和列名以及其他内容括在反引号中。
发布于 2013-11-25 17:54:47
Backticks用于转义MySQL中的保留单词,例如,如果您的表中有一个名为select的字段,那么
SELECT select
FROM ...这将是一个语法错误,因为MySQL无法分辨什么是字段,什么是SQL“脚手架”的一部分。但如果你用后背:
SELECT `select`
FROM ...然后,它告诉MySQl,select是一个字段(或表名),不应被视为sql关键字。
使用单个'引号,可以将内容转换为字符串:
SELECT 'select'
FROM ...既然'select'是这样的,那么您将选择一个包含字母s、e、l等的文字字符串.它被视为字符串,而不是sql关键字或字段/表名。
这意味着
SELECT ...
FROM 'food'失败,因为您试图从文字字符串中进行选择。它不是一个表名,也不能从中选择。
https://stackoverflow.com/questions/20199814
复制相似问题