使用与表列相同的MySQL关键字有什么风险?

时间:2014-06-12 10:58:45

标签: php mysql reserved

到目前为止,我已经使用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

2 个答案:

答案 0 :(得分:3)

风险?您遇到了风险:查询未运行,因此您必须修复它。

对于大多数关键字,关键字与标识符仍然产生有效查询的可能性很小。当然,你可以想出一些神秘的例子。

修复是逃避标识符。 MySQL使用反引号进行转义。其他数据库使用双引号或方括号。因此,存在另一个风险:使用反引号越多,代码的可移植性就越低。

对我而言,主要原因是可写性和可读性。我的键盘上的反引键是在左上方的位置,我的小小的小指必须到达远处。我发现阅读生成的代码更加繁琐,周围有许多神秘的角色。为清楚起见,请避免转义标识符。避免使用保留字并仅使用字母,数字和下划线就足够了。

还有另一种风险。 。 。你会将单引号与反引号混淆。然后您的查询可能有一个常量,您认为它具有列值。这种混淆是这个社区中最常见的MySQL问题之一。

答案 1 :(得分:0)

在查询中按顺序使用反引号(`)。

示例:

SELECT *
FROM TableName
WHERE `order`='someval'

<强>旁注:

  

后退标记用于表和列标识符,但仅在标识符是MySQL保留关键字时才需要,或者当标识符包含空格字符或超出有限集的字符时,通常建议避免使用保留关键字尽可能作为列或表标识符,避免引用问题。

以下情况需要返回滴答:

SELECT id, `my name`, `another field` , `field,with,comma`