1

我需要从带有名为 的 id 键的查询中返回一个多维数组key。(需要亚马逊 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 键,但在查询中这样做似乎更快

4

2 回答 2

2

如前所述,使用反引号。

来自MYSQL 文档

如果您按照第 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)
于 2012-09-22T18:00:33.897 回答
1

在查询中远离表字段周围的保留关键字始终被认为是最好的方法...如果您在查询中使用保留关键字,则backtick允许您使用保留关键字...

正如标准backtick中未定义的那样ANSI SQL,当您从 MySQL 环境迁移时,它可能会产生问题......

于 2012-09-22T17:56:02.510 回答