>백엔드 개발 >PHP 튜토리얼 >`IN()` 절에서 MySQLi 준비된 명령문과 함께 배열을 사용하는 방법은 무엇입니까?

`IN()` 절에서 MySQLi 준비된 명령문과 함께 배열을 사용하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-22 06:13:14996검색

How to Use an Array with MySQLi Prepared Statements in an `IN()` Clause?

'IN()' 쿼리에 대한 MySQLi 준비된 문에 배열을 통합하는 방법

필터링이 포함된 MySQL 쿼리를 실행할 때 WHERE ... IN(...) 구문을 사용하여 배열의 값을 기반으로 레코드를 기록하는 경우 보안 및 성능을 향상시키기 위해 준비된 문을 사용하는 것이 좋습니다. 그러나 질문에 표시된 대로 준비된 문을 사용하려면 결과를 수동으로 정렬해야 합니다.

이 문제를 해결하려면 준비된 문 내에서 MySQL에 내장된 IN() 기능을 활용하는 것이 더 나은 해결책입니다. 이를 통해 ID 배열을 쿼리에 직접 통합할 수 있습니다.

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

// Construct a comma-separated string of placeholders
$clause = implode(',', array_fill(0, count($ids), '?'));

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

// Bind the array of IDs to the placeholders
call_user_func_array(array($stmt, 'bind_param'), $ids);
$stmt->execute();

// Iterate over the results

이 접근 방식을 사용하면 전체 ID 배열에 대해 bind_param 함수가 한 번 호출되고 MySQL은 자동으로 필터링 및 순서 지정을 처리합니다. 결과. 이는 수동 정렬에 비해 더 효율적이고 강력한 솔루션을 제공합니다.

위 내용은 `IN()` 절에서 MySQLi 준비된 명령문과 함께 배열을 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.