Мне нужно вернуть многомерный массив из запроса с помощью ключей ключа с именем 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`)
но добавление backticks вокруг key
не дает ошибок
SELECT `file_name` AS `key` FROM (`uploads`)
Безопасно ли продолжать это или есть лучший способ? Я думал переименовать ключ id в массиве в PHP, но делать это в запросе быстрее
Как указано, используйте обратные ссылки.
Из документов 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)
Чтобы быть вдали от зарезервированного ключевого слова вокруг поля таблицы в запросе, всегда считалось наилучшим способом … Если вы используете зарезервированное ключевое слово в запросе, то backtick
позволяет вам использовать зарезервированное ключевое слово …
Поскольку backtick
не определен в ANSI SQL
, это, вероятно, создаст проблему при переносе из среды MySQL …