2013-07-13 2 views
0

그래서 나는 앨범 목록 테이블 이름을 '앨범'에서 '릴리스'로 변경하려고했는데, 어쨌든 내 감각을 더 잘 만들었습니다. 큰 실수! 쿼리가 갑자기 작동하지 않게되었습니다 ... 몇 시간 동안 연구 한 후에 'release'는 mySQL의 예약어이며 올바른 이스케이프가 사용되는 경우에만 사용할 수 있음을 알았습니다. 이 PHP에서 예약 된 MySQL의 단어를 탈출의 올바른 방법 인 경우이 경우 탈출이PHP에서 쿼리에 예약 된 mysql 단어를 탈출하는 방법?

<?php 
$sql = 'SELECT release.release_id, release.title, release.subtitle 
     FROM `release` 
     WHERE release.released_id = 567'; 
?> 

내 질문처럼, 기호 `입니다입니까? 이 문제를 정상화하는 방법이 있습니까? 감사합니다.

+1

글쎄, 당신은 정말 자신의 질문에 대답했다. '그것을하는 방법입니다. 따라서 테이블 이름을 묶는 것이 좋습니다. 개인적으로는 지저분하고 예약어 사용을 피하는 것이 좋습니다. 그러면 문제를 훌륭하게 해결할 수 있습니다. 어쨌든 이진 문자열로 '릴리스'를 보는 것처럼 이름이 여러분의 이익을위한 것임을 기억하십시오. 아마도 시소러스일까요? –

+0

확인을위한 감사합니다. 나는이 괴괴 한 특성이 이것에 관하여 가기에 적당한 방법 이었다는 것을 확인하고 싶다 ... 그래서 만약에 나가 backticks를 어디에나 사용하는 것을 피하고 싶은 경우에 나는 SELECT rl 같이 테이블에 별칭을 잘 사용한다 .title FROM \'release \'rl WHERE rl.release_id = 567 – Marco

답변

1

그냥 두 개의 backticks 사이에 넣으십시오. 이

$sql = 'SELECT `release`.release_id, `release`.title, `release`.subtitle 
    FROM `release` 
    WHERE `release`.released_id = 567'; 

편집과 같은 :

그냥 같은 aliace 사용하는 모든 곳에서 역 따옴표을 피하기 위해 :

$sql = 'SELECT r.release_id, r.title, r.subtitle 
FROM `release` as r 
WHERE r.released_id = 567'; 
+0

그래서 backticks를 사방에 쓰지 않으려면 SELECT와 같은 별칭을 사용하십시오. rl.title FROM \ release \'rl WHERE rl .release_id = 567 – Marco

+1

@Marco는 내 편집 된 답변을 보았습니다. 예, aliace를 사용합니다. –

4

어디에서나 백틱을 사용하십시오.

$sql = 'SELECT `release`.release_id, `release`.title, `release`.subtitle 
     FROM `release` 
     WHERE `release`.released_id = 567'; 
관련 문제