为什么把`放在栏目周围?

Jac*_*ack 8 mysql

在某些代码中,我看到人们把`放在他们的专栏周围.为什么?不使用它们有什么区别吗?

SELECT `players`.`name`, `houses`.`id` FROM `players`, `houses` 
WHERE `houses`.`owner` = `players`.`id`
Run Code Online (Sandbox Code Playgroud)

ken*_*ytm 19

使用反引号允许保留字用作列或表名,例如

SELECT `values` FROM `references` WHERE `precision` > 0
Run Code Online (Sandbox Code Playgroud)

并且非字母数字的名称也必须包含在"`"之间,例如

SELECT `user name` FROM `registered users` WHERE `total score` > 0
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅http://dev.mysql.com/doc/refman/5.1/en/identifiers.html.


我认为这些名称在动态使用时经常出现,例如(人工示例)

mysql_prepare_statement("SELECT `%q` FROM `%q` WHERE `%q` > 0", col, tbl, col_cond);
Run Code Online (Sandbox Code Playgroud)

在这种形式中,可以相同地处理任何类型的列和表名,并且col = "1; DROP TABLE users--"可以避免诸如恶意注入尝试.