2012-09-22 6 views
1

id 키가 key 인 쿼리에서 다차원 배열을 반환해야합니다.MySQL, 쿼리에 예약어 사용하기

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

문제 :

예 (객체 키 아마존 S3 API의에 필요한) key는 MySQL은 예약 된 이름입니다. I 으로 이름 키를 사용합니다.

다음 쿼리는 오류를

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

하지만 key 주위에 역 따옴표를 추가하는 것은 제공하지 않습니다 오류

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

는 다음과 같이 계속 안전한가요를 제공 또는 더 좋은 방법은 무엇입니까? 나는 PHP에서 배열의 id 키의 이름을 바꾸려고했지만 쿼리에서 수행하는 것이 더 빠를 것 같습니다.

+1

예는 역 따옴표가 – fire

+1

것은 안전이 무엇인지 이잖아 - 그렇지 않으면 작동하지 않습니다. 가능한 한 예약어를 사용하지 않는 것이 좋습니다. 코드를 따로 따로 작성하는 것이 더 어려워지기 때문입니다. – andrewsi

+0

SQL 함수가 순수한 숫자 열 이름으로 결과를 반환하는 인스턴스를 다시 설명합니다. 상황은 PHP와 같은 다양한 스크립팅 환경의 래퍼로 인해 악화됩니다. 이런 경우에는 'AS 별칭'을 통해 별칭을 사용하는 것을 고려하십시오. –

답변

2

... backtick으로

당신이 MySQL의 환경에서 마이그레이션 할 때, 아마 문제를 만듭니다 ANSI SQL 표준에 정의되지 않은 ... 당신이 예약 된 키워드를 사용하는 것을 허용 , 백틱을 사용하십시오. "스키마 개체 이름"9.2 절에 설명 된대로 MYSQL Docs

예약어에서

당신이 그들을 인용하는 경우 식별자로 허용됩니다

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) 
1

쿼리의 테이블 필드에서 예약 된 키워드를 벗어나는 것이 항상 최선의 방법이라고 생각합니다. 언급 한 바와 같이 쿼리에 예약 된 키워드는 다음 backtick