집 >데이터 베이스 >MySQL 튜토리얼 >PDO를 사용하여 WHERE IN 절에 대한 매개변수를 올바르게 바인딩하는 방법은 무엇입니까?
PDO를 사용하여 WHERE IN 절에 대한 매개변수 바인딩
PDO를 사용하여 WHERE IN 절이 있는 쿼리를 실행하는 경우 매개변수 바인딩이 작동하지 않을 수 있음 예상대로. 제공된 코드 조각에서 볼 수 있듯이 쉼표로 구분된 값 목록을 :ids 매개변수에 바인딩하면 배열에 여러 값이 있음에도 불구하고 개수가 1이 됩니다.
설명
문제는 IN 절이 값의 형식을 어떻게 예상하는지에 있습니다. 배열을 바인딩할 때 PHP는 모든 요소를 단일 문자열로 결합하며, 이는 데이터베이스에서 하나의 매개변수로 처리됩니다. 이로 인해 다음 쿼리가 실행됩니다.
SELECT foo FROM bar WHERE ids IN ('1,2,3')
그러나 IN 절에서는 각 값이 개별 매개변수여야 합니다.
SELECT foo FROM bar WHERE ids IN (1, 2, 3)
솔루션
이 문제를 해결하려면 IN 목록을 쿼리 문자열에 수동으로 삽입해야 합니다.
'SELECT foo FROM bar WHERE ids IN (' . $myArray .')'
또는 binParam 메서드를 사용하여 배열이 아닌 개별 값을 바인딩할 수도 있습니다.
위 내용은 PDO를 사용하여 WHERE IN 절에 대한 매개변수를 올바르게 바인딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!