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

标签 php mysql reserved

到目前为止,我已经使用 PHP 展示了一个具有与 MySQL 相同的列字段和关键字的项目。今天再次使用PhpMyAdmin管理数据库时,刚收到如下消息警告。

The column name 'order' is a MySQL reserved keyword.

我的项目仍在使用关键字 order 作为列名。

我的问题是有什么风险或......当我们使用与表列相同的 MySQL 关键字时

最佳答案

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

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

解决方法是转义标识符。 MySQL 使用反引号进行转义。其他数据库使用双引号或方括号。因此,还有另一个风险:反引号使用得越多,代码的可移植性就越差。

对我来说,主要的原因是可写性和可读性。在我的键盘上,反引号键位于左上角,我的小拇指必须伸得很远才能找到它。我发现阅读生成的代码更加麻烦,因为周围有很多神秘的字符。为清楚起见,避免转义标识符。避免保留字,只使用字母、数字和下划线就足够了。

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

关于php - MySQL同表列使用相同的关键字有什么风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24182692/

相关文章:

mysql - Doctrine 1.2 : get products where associated simple products have stock

Azure 保留的 IP 不存在

c++ - move 是 c++ 中的关键字吗?

PHP fputcsv 生成空文件

php - 如何将文件夹名称更改为ubuntu根目录

php - Laravel模型查询错误: "Illuminate\Database\QueryException: SQLSTATE[23000]: Integrity constraint violation"

c - 在c中保留变量数组的地址

php - CodeIgniter 全局变量

php - 无法在 codeigniter 应用程序中将超过 6 种产品添加到购物车

php - 仅在 PHP 中执行查询时出现 SQL 语法错误