到目前为止,我已经使用PHP使用相同的列字段和MySQL关键字来展示项目。当我今天使用PhpMyAdmin再次管理数据库时,我刚收到如下消息警告。
The column name 'order' is a MySQL reserved keyword.
我的项目仍在使用关键字order
作为列名。
我的问题是what are the risks or ... when we're using the same keyword of MySQL as table column
?
答案 0 :(得分:3)
风险?您遇到了风险:查询未运行,因此您必须修复它。
对于大多数关键字,关键字与标识符和仍然产生有效查询的可能性很小。当然,你可以想出一些神秘的例子。
修复是逃避标识符。 MySQL使用反引号进行转义。其他数据库使用双引号或方括号。因此,存在另一个风险:使用反引号越多,代码的可移植性就越低。
对我而言,主要原因是可写性和可读性。我的键盘上的反引键是在左上方的位置,我的小小的小指必须到达远处。我发现阅读生成的代码更加繁琐,周围有许多神秘的角色。为清楚起见,请避免转义标识符。避免使用保留字并仅使用字母,数字和下划线就足够了。
还有另一种风险。 。 。你会将单引号与反引号混淆。然后您的查询可能有一个常量,您认为它具有列值。这种混淆是这个社区中最常见的MySQL问题之一。
答案 1 :(得分:0)
在查询中按顺序使用反引号(`)。
示例:
SELECT *
FROM TableName
WHERE `order`='someval'
<强>旁注:强>
后退标记用于表和列标识符,但仅在标识符是MySQL保留关键字时才需要,或者当标识符包含空格字符或超出有限集的字符时,通常建议避免使用保留关键字尽可能作为列或表标识符,避免引用问题。
以下情况需要返回滴答:
SELECT id, `my name`, `another field` , `field,with,comma`