현재 위치: > 최신 기사 목록> next_result ()를 사용하여 다중 자극 세트를 가로 질러 데이터를 추출하는 방법

next_result ()를 사용하여 다중 자극 세트를 가로 질러 데이터를 추출하는 방법

gitbox 2025-05-02

데이터베이스 작업에 PHP 및 MySQLI를 사용할 때는 일반적으로 한 번에 하나의 쿼리 만 실행합니다. 그러나 일부 복잡한 비즈니스 시나리오에서는 하나의 요청을 통해 여러 쿼리 문을 실행해야 할 수 있으며,이 시점에서 여러 결과 세트를 처리해야합니다. PHP의 MySQLI Extension은 다음 _result () 함수를 제공하여 이러한 결과 세트를 통과 할 수 있도록 도와줍니다.

1. 왜 여러 결과 세트가 있습니까?

여러 결과 세트는 일반적으로 여러 문을 포함하는 SQL 쿼리가 실행될 때 발생합니다.

 SELECT * FROM users; SELECT * FROM orders;

이것은 저장 절차 (저장 절차) 또는 배치로 SQL을 실행할 때 일반적입니다. PHP의 mysqli_multi_query () 는 이러한 형태의 배치 실행을 지원합니다.

2. 기본 프로세스

PHP에서 여러 결과 세트를 처리하기 위해 mysqli_multi_query ()next_result ()를 사용하는 기본 단계는 다음과 같습니다.

  1. 데이터베이스 연결을 만듭니다

  2. mysqli_multi_query ()를 사용하여 다중 상태 쿼리를 수행하십시오

  3. Store_result () 를 사용하여 현재 결과 세트를 얻으십시오

  4. next_result ()를 사용하여 다음 결과 세트로 이동하십시오

3. 샘플 코드를 완료하십시오

다음은 여러 결과 세트를 반복하고 데이터를 추출하는 방법을 보여주는 구체적인 예입니다.

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_errno) {
    die("연결이 실패했습니다: " . $mysqli->connect_error);
}

$sql = "SELECT id, username FROM users; SELECT id, order_date FROM orders;";
if ($mysqli->multi_query($sql)) {
    do {
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_assoc()) {
                echo "<pre>";
                print_r($row);
                echo "</pre>";
            }
            $result->free();
        }

        // 더 많은 결과 세트가 있는지 확인하십시오
        if ($mysqli->more_results()) {
            echo "<hr>다음 결과 세트:<br>";
        }
    } while ($mysqli->next_result());
} else {
    echo "쿼리 실행이 실패했습니다: " . $mysqli->error;
}

$mysqli->close();
?>

4. 주목할만한 것들

  1. SQL 문이 세미콜론으로 분리되어 있는지 확인하십시오 . 이것은 multi_query () 에 필요합니다.

  2. 각 결과 세트는 store_result ()를 사용하여 추출해야하며 자원은 제 시간에 해제해야합니다 .

  3. next_result ()는 데이터를 반환하지 않으며 기능은 store_result ()가 다음 결과 세트를 추출 할 수 있도록하는 것입니다 .

  4. 디버깅 중에 MySQLi-> 오류를 인쇄하여 오류 정보를 볼 수 있습니다 .

5. 실제 응용 시나리오

  • 배치의 여러 테이블에서 데이터를 읽고 같은 페이지에 표시합니다.

  • 여러 결과 세트를 반환하는 통화 저장 절차

  • 복잡한 통계 분석 SQL 쿼리를 수행 할 때

6. 안전 권장 사항

다중 상태 쿼리를 실행할 때 SQL 주입 위험에주의를 기울여야합니다. Multi_Query () 자체가 준비를 지원하지는 않지만 준비bind_param 방법을 사용하는 것은 더 안전한 접근법이지만 위험을 피하기 위해 논리를 여러 단일 쿼리로 분할 할 수 있습니다.