back tick在mysql语句中做什么?
在这样的声明中back tick在mysql语句中做什么?,mysql,sql-injection,Mysql,Sql Injection,在这样的声明中 $sql = "SELECT distinct `term`,count(*) as count FROM {$temp_table_name} group by `term` order by count DESC"; 在字段名“term”周围使用回勾字符(`)能给我带来什么好处? 使用回勾是否出于性能原因?还是为了某种SQL注入保护 注意:在我提交问题后,我意识到在stackoverflow上的字段名“term”周围没有反勾字符。 我不知道有什么方法可以让它出现在问
$sql = "SELECT distinct `term`,count(*) as count
FROM {$temp_table_name}
group by `term` order by count DESC";
在字段名“term”周围使用回勾字符(`)能给我带来什么好处?
使用回勾是否出于性能原因?还是为了某种SQL注入保护
注意:在我提交问题后,我意识到在stackoverflow上的字段名“term”周围没有反勾字符。
我不知道有什么方法可以让它出现在问题主体中 反勾号只允许在字段名中使用空格或其他替代字符
我想这已经解释得很清楚了。倒勾只允许在字段名中使用空格或其他替代字符
我想这已经解释得很清楚了。如果
术语
是mysql的关键字,你需要引用`,否则就没有必要了
Ps:
distinct
在您的案例中是不必要的,因为您是按它分组的。如果term
是mysql关键字,您需要按`引用它,否则就没有必要了
注:
distinct
在您的案例中是不必要的,因为您按它分组。后面的勾号是“官方”标识符引号字符
如链接文档中所述,它允许在标识符中使用更广泛的字符数组。后面的勾号是“官方”标识符引号字符
它允许标识符中包含更广泛的字符数组,如链接文档中所述。当我们使用关键字作为表名时,MySQL中的字段名使用反勾号,或者在启用ANSI_quotes时使用双引号。从其他方面来说,这是不必要的。当我们使用关键字作为表名时,它不会与
SQL注入保护相关,或者在启用ANSI_quotes时使用双引号。从其他方面来说,这是不必要的。它不会被关联到SQL注入保护
可能重复的可能重复的可能重复的谢谢大家!所有答案都很好。xdazz,如果我想得到一个自动递增的字段作为{$temp_table_name}中的第一个字段,那么我的行最终会变成1------mercedes---567和2------bmw---566等等,我该怎么办?实际上,在创建报表摘要表时,我需要在insertinto操作中使用此语句。目前该表只有两个col,即term和count。我想在这里添加一个递增的ID,因为insertinto执行插入操作。谢谢大家!所有答案都很好。xdazz,如果我想得到一个自动递增的字段作为{$temp_table_name}中的第一个字段,那么我的行最终会变成1------mercedes---567和2------bmw---566等等,我该怎么办?实际上,在创建报表摘要表时,我需要在insertinto操作中使用此语句。目前该表只有两个col,即term和count。我想在insertinto执行insertions时在其中添加一个递增的ID。