php - MySQL,在查询中安全地使用保留字

标签 php mysql reserved-words

<分区>

我需要从一个名为 key 的 id 键的查询中返回一个多维数组。 (需要 amazon S3 API 中的对象键)

例子:

Array ( [0] => Array ( [key] => 8 ) [1] => Array ( [key] => 7 ) [2] => Array ( [key] => 6 ) )

问题:key 是 MySQL 中的保留名称。我必须使用名称键。

下面的查询给出了一个错误

SELECT `file_name` AS key FROM (`uploads`)

但是在 key 周围添加反引号不会出错

SELECT `file_name` AS `key` FROM (`uploads`)

这样继续下去是否安全,还是有更好的方法?我想在 PHP 中重命名数组中的 id 键,但在查询中这样做似乎更快

最佳答案

如前所述,使用反引号。

来自MYSQL Docs

如果您按照第 9.2 节“模式对象名称”中的描述引用保留字,则允许它们作为标识符:

mysql> CREATE TABLE interval (begin INT, end INT);
ERROR 1064 (42000): You have an error in your SQL syntax ...
near 'interval (begin INT, end INT)'

mysql> CREATE TABLE `interval` (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)

关于php - MySQL,在查询中安全地使用保留字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12546267/

相关文章:

php - 在 mysql 连接之间交替

php - MYSQL LIKE 匹配字符串的一部分

MySQL - 行到列

mysql - 从字符串到 double 的转换无效

php - 是否有可能 "escape"PHP 中的方法名称,以便能够拥有与保留关键字冲突的方法名称?

database-design - 您是否根据保留字列表检查字段名和表名?

mysql - Laravel - 如何插入带有保留字和破折号的行

php - 将网络系统与卡支付处理终端集成

php - 使用 mysql php session 进行 LDAP 身份验证

mysql - 一般错误 : 1366 Incorrect integer value: