首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql/php中的撇号类型

问mysql/php中的撇号类型
EN

Stack Overflow用户
提问于 2013-11-25 17:48:03
回答 4查看 1.5K关注 0票数 1

我在mysql中遇到了一个查询示例:

代码语言:javascript
复制
SELECT `id`, `food`, `calories`, `healthy_unhealthy` FROM `food` WHERE 1  //works

在Codelobster中输入它,它会像这样出现:

代码语言:javascript
复制
$query = "SELECT 'id', 'food', 'calories', 'healthy_unhealthy' FROM 'food'"; //fails

撇号是不同的。它失败的原因是:

您的SQL语法出现错误;请检查与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在行处使用“食品”。

如果我把能工作的那个放到$query中,它就能工作了。

代码语言:javascript
复制
$query = "SELECT `id`, `food`, `calories`, `healthy_unhealthy` FROM `food`"; //works

如果在php编辑器上这样做,则撇号不起作用,因为它是不同的。只是这一变化本身就使它无法奏效。在php编辑器中,是否有用于该样式的键或设置?

EN

回答 4

Stack Overflow用户

发布于 2013-11-25 17:52:38

反勾符是mysql语法,用于包装表名,并将表显式标识为表名。常规单引号用于普通字符串分隔符。不同的是,例如

代码语言:javascript
复制
`id`

同时引用一列

'id'

只是一根绳子。或者,您可以不对列名或表名使用回勾,只要它们不是mysql保留的单词(无论如何都不应该这样做)。

例如,如果在名为foo的表中有一个名为bar的列,则可以这样做

代码语言:javascript
复制
$sql = "select `foo` from `bar`"; 

或

代码语言:javascript
复制
$sql = "select foo from bar";

但是,如果您有一个名为count的列,则必须将其包装在backticks中,因为count是mysql中的一个保留字:

代码语言:javascript
复制
$sql = "select `count` from bar"; 

正如前面提到的,您不应该将您的列或表命名为保留词。这是个糟糕的练习。虽然mysql允许这样做,但是不是所有的数据库都支持这一点,所以它会降低查询的可移植性。

票数 1
EN

Stack Overflow用户

发布于 2013-11-25 17:52:50

‘被称为反引号,它们之间的任何解释都是100%的字面意思。这实际上允许您拥有具有语法意义的字符,这些字符实际上用作表名或db名称(除其他外)。虽然在表名等中使用具有语法意义的字符是不好的做法,但是自动化程序必须考虑到这一点,因此必须将所有表名和列名以及其他内容括在反引号中。

票数 0
EN

Stack Overflow用户

发布于 2013-11-25 17:54:47

Backticks用于转义MySQL中的保留单词,例如,如果您的表中有一个名为select的字段,那么

代码语言:javascript
复制
SELECT select
FROM ...

这将是一个语法错误,因为MySQL无法分辨什么是字段,什么是SQL“脚手架”的一部分。但如果你用后背:

代码语言:javascript
复制
SELECT `select`
FROM ...

然后,它告诉MySQl,select是一个字段(或表名),不应被视为sql关键字。

使用单个'引号,可以将内容转换为字符串:

代码语言:javascript
复制
SELECT 'select'
FROM ...

既然'select'是这样的,那么您将选择一个包含字母s、e、l等的文字字符串.它被视为字符串,而不是sql关键字或字段/表名。

这意味着

代码语言:javascript
复制
SELECT ...
FROM 'food'

失败,因为您试图从文字字符串中进行选择。它不是一个表名,也不能从中选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20199814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档