> 백엔드 개발 > PHP 튜토리얼 > MySQL의 `WHERE ... IN()` 절에서 배열 필터와 함께 준비된 명령문을 효율적으로 사용할 수 있습니까?

MySQL의 `WHERE ... IN()` 절에서 배열 필터와 함께 준비된 명령문을 효율적으로 사용할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-16 16:33:11
원래의
757명이 탐색했습니다.

How Can I Efficiently Use Prepared Statements with Array Filters in MySQL's `WHERE ... IN()` Clause?

배열 필터를 사용하여 준비된 문: 'WHERE .. IN(..)' 쿼리

문제

행을 기반으로 검색하는 다음 쿼리를 고려하세요. 특정 ID에 대해:

SELECT * FROM somewhere WHERE `id` IN(1,5,18,25) ORDER BY `name`;
로그인 후 복사

ID 배열이 지정됨 ($ids)를 가져오려면 효율성을 위해 준비된 문을 사용하는 것이 좋습니다. 그러나 루프를 사용하여 배열을 반복하고 각 ID를 별도로 바인딩하려면 결과를 수동으로 정렬해야 합니다.

해결책

이 프로세스를 단순화하고 MySQL 순서를 유지하기 위해 다음과 같은 대체 접근 방식이 있습니다.

$ids = array(1,5,18,25);

// Construct a placeholder string containing ?,?,? etc.
$clause = implode(',', array_fill(0, count($ids), '?'));

$stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;');

// Bind all IDs to the placeholder string using call_user_func_array
call_user_func_array(array($stmt, 'bind_param'), $ids);
$stmt->execute();

// Iterate over the results
로그인 후 복사

이 방법은 한 번의 호출로 모든 ID를 자리 표시자 문자열에 바인딩하여 MySQL이 필터링 및 정렬을 수행할 수 있도록 합니다. 효율적으로.

위 내용은 MySQL의 `WHERE ... IN()` 절에서 배열 필터와 함께 준비된 명령문을 효율적으로 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿