현재 위치: > 최신 기사 목록> mysqli_more_results ()를 사용하여 다음 결과가 있는지 확인하십시오.

mysqli_more_results ()를 사용하여 다음 결과가 있는지 확인하십시오.

gitbox 2025-04-29

MySQLI를 사용하여 다중 정체 문을 실행할 때 때때로 각 결과를 차례로 처리해야합니다. PHP는 MySQLI_MORE_RESULTS ()MYSQLI_NEXT_RESULT () 의 두 가지 기능을 제공하여 이러한 결과를 우아하게 통과 할 수 있습니다.

이 기사는 실제 코드 예제를 사용하여 mysqli_next_result ()에 대한 잘못된 호출을 피하기 위해 MySQLI_MORE_RESULTS ( )를 사용하는 방법을 설명합니다.

장면 소개

예를 들어 SQL 문의 세트가 있다고 가정합니다.

 SELECT * FROM users;
SELECT * FROM orders;
SELECT * FROM products;

한 번에 실행하고 각 쿼리의 결과를 하나씩 처리하려고합니다. 이 상황은 백엔드 배치 데이터 디스플레이, 데이터 초기화 및 기타 목적을 관리하는 데 적합합니다.

Multi_Query를 사용하여 멀티 스테이션을 실행하십시오

먼저 데이터베이스에 연결하고 Multi_Query를 사용하여 여러 SQL 문을 실행해야합니다.

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

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

$sql = "
    SELECT * FROM users;
    SELECT * FROM orders;
    SELECT * FROM products;
";

if ($mysqli->multi_query($sql)) {
    do {
        // 현재 결과 세트를 처리하십시오
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_assoc()) {
                print_r($row);
            }
            $result->free();
        }

        // 다른 결과 세트가 있는지 확인하십시오
        if ($mysqli->more_results()) {
            echo "더 많은 결과 세트가 있습니다,계속 처리 할 준비가되었습니다...\n";
        } else {
            echo "모든 결과가 처리되었습니다。\n";
        }

    } while ($mysqli->more_results() && $mysqli->next_result());
} else {
    echo "실행 실패: " . $mysqli->error;
}

$mysqli->close();

설명

이 예에서는 다음과 같은 주요 기능을 사용합니다.

  • mysqli :: multi_query ($ query)
    여러 SQL 문이 포함 된 쿼리를 데이터베이스에 보냅니다.

  • mysqli :: store_result ()
    현재 결과 세트를 가져옵니다.

  • mysqli :: more_results ()
    나머지 결과 세트가 있는지 확인하십시오.

  • mysqli :: next_result ()
    다음 결과 세트로 이동하여 계속 처리 할 수 ​​있습니다.

do ... while loop을 통해 mysqli_more_results ()mysqli_next_result ()를 결합한 루프를 통해 다음 _result ()를 잘못 호출 할 때 정의되지 않은 동작이나 오류를 피하기 위해 모든 결과 세트를 안전하게 처리 할 수 ​​있습니다.

일반적인 오류 데모

일부 개발자는 결과가 더 있는지 확인하지 않고 루프에서 직접 mysqli_next_result ()를 사용할 수 있으며 다음과 같은 오류가 발생할 수 있습니다.

 // 잘못된 사용:확인되지 않았습니다 more_results() 그냥 전화하십시오 next_result()
while ($mysqli->next_result()) {
    // 처리 결과 세트
}

그렇게하면 후속 결과없이 경고 나 오류가 발생할 수 있습니다. 따라서 다음 _result ()를 호출하기 전에 항상 more_results ()를 확인해야합니다.

요약

mysqli_more_results ()는 multi_query ()를 사용한 후 더 많은 결과 세트가 있는지 여부를 결정하는 중요한 도구입니다. mysqli_next_result () 와 함께 사용하면 프로그램 논리의 견고성을 보장하고 결과 세트에 대한 외형 액세스로 인한 오류를 피할 수 있습니다.

보고서 시스템 또는 배경 데이터 배치 로직과 같은 실제 프로젝트 에서이 기술을 마스터하면 PHP 프로그램을보다 신뢰할 수 있고 유지 관리 할 수 ​​있습니다.

자세한 내용은 개발 문서를 방문하십시오 : https://gitbox.net/docs