MySQL 준비된 문에서 가변 크기 변수 목록 처리
MySQL의 준비된 문은 동적 쿼리를 실행하는 안전하고 효율적인 방법을 제공합니다. 그러나 값의 개수를 알 수 없는 IN 절과 같이 다양한 개수의 인수가 포함된 쿼리를 처리할 때 문제가 발생합니다.
해결책 1: 임시 테이블 사용
한 가지 접근 방식은 임시 테이블을 만들고 원하는 값을 삽입하는 것입니다. 그러면 쿼리가 임시 테이블에 조인되어 관련 데이터를 검색할 수 있습니다. 이 솔루션은 큰 값 목록에 적합할 수 있습니다.
해결책 2: Implode 함수 활용
또 다른 기술은 implode() 함수를 사용하여 IN 절을 만드는 것입니다. 동적으로. 다음 PHP 코드는 방법을 보여줍니다.
// Define the query with a placeholder IN clause $sql = 'SELECT age, name FROM people WHERE id IN (%s)'; // Get the number of parameters in the IN clause $parmcount = count($parms); // Create a placeholder string for the IN clause (e.g., "?, ?, ?, ?") $inclause = implode(',', array_fill(0, $parmcount, '?')); // Format the query with the dynamic IN clause $preparesql = sprintf($sql, $inclause); // Prepare and execute the statement $st = $dbh->prepare($preparesql); $st->execute($parms);
솔루션 비교
대규모 목록의 경우 임시 테이블 접근 방식이 더 효율적일 수 있는 반면, 내포 솔루션은 더 간단합니다. 더 작은 목록을 위한 잠재적으로 더 빠른 옵션입니다.
솔루션의 간결한 버전 2
간결한 솔루션을 원하는 경우:
$st = $dbh->prepare(sprintf('SELECT age, name FROM people WHERE id IN (%s)', implode(',', array_fill(0, count($parms), '?')))); $st->execute($parms);
위 내용은 MySQL 준비 문에서 가변 크기 IN 절을 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!