在mysql语句中返回tick做什么?

时间:2012-06-17 05:07:15

标签: mysql sql-injection

在这样的声明中;

$sql = "SELECT distinct `term`,count(*) as count 
FROM {$temp_table_name} 
group by `term` order by count DESC";  

在字段名称'term'周围使用后退字符(`)给我买什么? 出于性能原因,是否使用了后退?或者它是否适用于某种SQL注入保护?

注意:在我提交问题后,我意识到反引号字符没有显示在字段名称'term'周围 - 就在stackoverflow上。 我不知道如何让它出现在问题体中。

4 个答案:

答案 0 :(得分:6)

如果term是mysql关键字,则需要通过`引用它,否则,没有必要。

Ps:distinct在您的情况下不是必需的,因为您按照它进行分组。

答案 1 :(得分:3)

反向标记是'官方'标识符引用字符。

http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

它允许标识符中包含更多字符,如链接文档中所述。

答案 2 :(得分:2)

反引号只允许在字段名称中使用空格或其他替代字符。

我认为已经很好地解释了here

答案 3 :(得分:1)

当我们使用关键字作为表名时,MySQL中的字段名称使用反引号,或者在启用ANSI_QUOTES时使用双引号。其他方面没有必要。它不会转换为SQL injection protection