在某些代码中,我看到人们把`放在他们的专栏周围.为什么?不使用它们有什么区别吗?
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--"可以避免诸如恶意注入尝试.