행을 기반으로 검색하는 다음 쿼리를 고려하세요. 특정 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!