PHP의 MySQLI Extension에서 Next_result ()는 종종 간과되지만 매우 강력한 기능입니다. 특히 저장된 절차 및 복잡한 다중 쿼리 요청을 처리 할 때 개발자가 여러 결과 세트를 점차적으로 추출하여 코드의 가독성과 유지 보수를 향상시키는 데 도움이 될 수 있습니다.
이 기사에서는 실용적인 사례를 사용하여 복잡한 쿼리에서 Next_result ()를 올바르게 사용하는 방법에 대한 깊은 이해를 안내하고 무시하기 쉬운 사용 기술을 제공합니다.
mysqli :: multi_query ()를 사용하여 여러 SQL 문을 실행할 때 각 문은 결과 세트를 생성 할 수 있습니다. Next_result () 메소드를 사용하면 다음 결과 세트로 점프 하여이 결과에 하나씩 액세스 할 수 있습니다.
백엔드 통계 모듈을 개발하고 있으며 요청을 통해 다음 정보를 얻어야한다고 가정합니다.
총 사용자 수
활성 사용자 수
지난 주에 새로 등록 된 사용자 목록
효율성을 향상시키기 위해이 세 가지 쿼리를 요청에 포장하여 처리를 위해 데이터베이스로 보낼 수 있습니다.
$sql = "
SELECT COUNT(*) AS total_users FROM users;
SELECT COUNT(*) AS active_users FROM users WHERE last_login > NOW() - INTERVAL 30 DAY;
SELECT id, username, created_at FROM users WHERE created_at > NOW() - INTERVAL 7 DAY;
";
다음으로 MySQLI :: Multi_Query ()를 사용 하여이 쿼리 세트를 실행합니다.
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
if ($mysqli->multi_query($sql)) {
do {
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$result->free();
}
} while ($mysqli->next_result());
} else {
echo "쿼리가 실패했습니다: " . $mysqli->error;
}
$mysqli->close();
Array
(
[total_users] => 5000
)
Array
(
[active_users] => 1250
)
Array
(
[id] => 1023
[username] => user_2023
[created_at] => 2025-04-22 15:32:00
)
// 다른 사용자...
많은 개발자들이 첫 번째 결과 세트를 처리 한 후 Next_result () 호출을 잊어 버려 후속 결과 세트가 무시되거나 오류가 발생합니다.
Multi_Query ()가 실행되지 않으면 상세 오류가 일반 쿼리처럼 던져지지 않습니다. 실패 원인을 보려면 $ mysqli-> 오류를 사용하십시오.
결과 세트를 얻을 때마다, 특히 멀티 쿼리 결과 세트가 큰 경우 $ result-> free ()를 무료 메모리에 사용해야합니다.
캡슐화 된 결과 처리 로직 : next_result () 의 처리를위한 전용 기능을 작성하고, 읽기 및 논리를 통합하고, 재사용 성을 향상시킵니다.
오류 처리 메커니즘 통합 : Multi_Query () 오류 로그는 유지 보수를 쉽게하기 위해 로그 시스템에 균일하게 기록됩니다.
결과 캐싱 : 쿼리 결과를 재사용 할 수있는 경우 복잡한 쿼리의 빈번한 실행을 피하기 위해 Redis 또는 파일 캐시와 결합 할 수 있습니다.
next_result () 는 다중 평균 세트를 처리하기위한 PHP에서 필수적인 도구입니다. 합리적으로 사용하면 데이터베이스 상호 작용 효율을 크게 최적화하고 시스템 성능을 향상시킬 수 있습니다. 다차원 통계에 관계없이 다중 단계 저장 절차를 호출하든 Next_result ()를 사용하는 기술을 마스터하면 PHP 개발에 많은 어려운 힘이 추가됩니다.
이러한 결과를 프론트 엔드 페이지에 통합하는 방법에 대해 자세히 알아 보거나 JSON API 응답으로 변환하려면 다음 기사를 참조하십시오. 다중 쿼리 결과를 JSON 인터페이스 반환 구조로 우아하게 출력하는 방법은 무엇입니까?