1

という名前の ID キーを持つクエリから多次元配列を返す必要がありますkey。( Amazon S3 APIのオブジェクト キーに必要)

例:

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

問題: keyMySQL の予約名です。名前キーを使用する必要があります

次のクエリはエラーになります

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 に答える