更新查询语句中的MySql / PHP刻度标记

时间:2013-06-11 23:18:22

标签: php mysql

我正在阅读有关mysql查询等的一些代码。我遇到了“`”的使用,某种类似PHP反引号的刻度线。我想知道他们的意思,他们的正式名称以及关于如何或何时使用它们的mysql参考链接。

这是我正在谈论的一个例子:

$update = mysql_query ("UPDATE tablename SET (column1,`".$EXPfields."`) =('$something','".$EXPvalues."') 

在哪里.... “);

4 个答案:

答案 0 :(得分:3)

它是反引号运算符,用于转义引用字段或表名称的单词,这些字段是MySQL的SQL方言中的保留字,或者包含空格等无效字符。因此,如果您有一个名为select的表,其中包含一个名为select的字段,您必须像这样检索它:

select `select` from `select`

反引号允许MySQL正确地将其解析为一个有效的查询,而不会混淆单词的含义。

Official documentation is here

答案 1 :(得分:1)

反引号是mysql的标识符引号字符。顾名思义,它的目的是引用标识符'(列,表...名称),以确保mysql理解你的意思。

您可以在mysql page about identifiers(搜索反推)

中找到有关它们的一些文档

他们会提供帮助的明显示例是当您的列/表名称包含空格或保留字时(顺便说一下,这些都是不鼓励的做法)

// error, since order is a reserved word
SELECT order FROM table
// works, the column name is quoted
SELECT `order` FROM table

// error, since there is a space
SELECT field FROM my table
// works, the column name is quoted
SELECT field FROM `my table`

使用它们没有任何缺点,它们只能帮助mysql解析您的查询。

更多信息:

Benefits of using backtick (`) in MySQL queries? [dba.stackexchange.com]

Using backticks around field names [stackoverflow.com]

答案 2 :(得分:0)

MySQL Reserved Words不能用作表名或列名。从技术上讲,唯一一个绝对需要使用反引号的地方是当你有一个表或列,其名称中有一个保留字。这告诉MySQL它不应该将名称解释为保留字,而只是表格/列名称。

然而,在实践中,我发现总是使用反引号是好的,因为它有助于区分SQL中的表/列名称和函数,操作数和其他结构。

答案 3 :(得分:0)

它们本质上是围绕变量的引用,这些变量包含会使其无效的字符

Using backticks around field names

有更多关于它们的信息