WHERE ... IN(...) 쿼리에 대한 MySQL 준비 문에서 배열 사용
준비된 문을 사용하여 데이터베이스를 쿼리할 때, 성능을 향상시키려면 단일 문을 준비하고 여러 번 실행하는 것이 좋습니다. 그러나 WHERE ... IN(...) 쿼리에 대한 ID 배열을 처리할 때 실행 후 결과를 수동으로 정렬하는 것은 비효율적일 수 있습니다.
대체 접근 방식은 생성과 관련된 기술을 활용하는 것입니다. 배열의 길이를 기준으로 쉼표로 구분된 자리 표시자(?) 목록입니다. 다음 예를 고려하십시오.
$ids = array(1,5,18,25); // Create a string containing ?,?,? $clause = implode(',', array_fill(0, count($ids), '?')); $stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;'); call_user_func_array(array($stmt, 'bind_param'), $ids); $stmt->execute(); // Loop through results
이 접근 방식에서 implode(...)는 필요한 수의 자리 표시자가 포함된 문자열을 생성합니다. 그런 다음 call_user_func_array(...) 함수는 $ids 배열의 값을 자리 표시자에 바인딩합니다. 이 기술을 사용하면 MySQL에 내장된 정렬 기능을 사용하여 결과를 정렬할 수 있으므로 수동으로 정렬할 필요가 없습니다.
위 내용은 WHERE ... IN() 절에서 MySQL 준비 문과 함께 배열을 효율적으로 사용하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!