2012-07-10 6 views
1

오늘 전에는 본적이없는 버그 (PDO에서)가 발생했지만, 생각해 보면 분명합니다. 내가 사용했다 Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number:PDO 유효하지 않은 매개 변수 번호 - 설명의 매개 변수

쿼리는 다음과 유사했다 :

SELECT 
    x 
FROM 
    y 
WHERE 
    -- CHECKING IF X = :Z -- 
    x = :y 
AND 
    1 = 2 

은 분명히 내가 이상의 매개 변수를했고, 더 이상 질의

나는 다음과 같은 오류가 발생했습니다.

왜이 오류가 발생합니까?

+0

나는 [당신의 거의 동일한 질문]를 결합 할 것이다 (http://stackoverflow.com/questions/11415355/pdo-invalid-parameter-number-mixed-named-and-positional-parameters-question/)이 하나와 함께. 똑같은 것이'?'에 적용된다는 것을 여기에 기록하십시오. – Wiseguy

+0

다른 질문에 대한 내 의견을 참조하십시오 : 그들은 서로 다른 오류를 초래하고 내 겸손한 의견에서 검색을 쉽게하기 위해 별도의 질문을 할 자격이 있습니다. – Sherlock

+0

왜 이것을 닫았습니까? 나는이 질문에 스스로 답했으며 이것은 나중에 참조 할 때 중요 할 수도 있습니다 ... – Sherlock

답변

3

해결 방법은 분명합니다. PDO는 주석을 무시하고 존재하지 않는 변수 ': Z'를 바인딩하려고 시도합니다. PDO의 주석에는 매개 변수를 사용할 수 없습니다 (바인딩하지 않는 한).

There's a similar bug using question marks in comments.

+0

PDO는 코멘트 내에 포함되어 있는지 여부에 관계없이 자리 표시자를 찾습니다. – ninetwozero

+1

잠깐, 직접 질문을 게시하고 직접 대답 했습니까? – ninetwozero

+1

예,이 지식이 유용합니다. 언 바운드 매개 변수를 찾는 데 30 분을 절약 할 수있었습니다. – Sherlock

관련 문제