현재 위치: > 최신 기사 목록> 다중 상태 실행에서 Next_result ()의 역할 (멀티 스테이트)

다중 상태 실행에서 Next_result ()의 역할 (멀티 스테이트)

gitbox 2025-05-02

데이터베이스 작업에 PHP를 사용하는 경우 효율성을 향상시키기 위해 한 번에 여러 SQL 문을 실행해야합니다. MySQLI 확장자는 다중 상태 실행을 지원하지만 여러 문의 결과를 처리 할 때는 Next_Result ()를 사용하여 각 결과 세트를 올바르게 통과해야합니다. 이 기사는 Next_result () 의 역할 및 사용 시나리오를 자세히 소개합니다.

멀티 스테이트 실행이란 무엇입니까?

다중 진술 실행을 통해 여러 SQL 문을 데이터베이스 요청에서 실행할 수 있으며 각 문을 세미콜론 ( ; )으로 분리합니다. 예를 들어:

 SELECT * FROM users;
SELECT * FROM orders;

mysqli :: multi_query () 메소드를 사용하면 위의 여러 쿼리를 한 번에 실행하여 데이터베이스와의 상호 작용 수를 줄이고 성능을 향상시킬 수 있습니다.

다음 _result ()가 필요한 이유는 무엇입니까?

Multi_Query ()를 사용하여 여러 문을 실행할 때 각 문은 독립적 인 결과 세트를 반환합니다. next_result () 의 목적은 이러한 결과 세트를 반복하여 각 문을 올바르게 처리 할 수 ​​있도록하는 것입니다.

next_result () 가 호출되지 않으면 첫 번째 문의 결과를 처리 할 수 ​​있으며 나머지 문의 결과는 무시되거나 오류가 발생합니다.

사용의 예

다음은 multi_query ()next_result ()를 사용하는 완전한 예입니다.

 <?php
// 데이터베이스 연결 구성
$host     = 'localhost';
$user     = 'root';
$password = 'password';
$database = 'test_db';

// 연결을 만듭니다
$mysqli = new mysqli($host, $user, $password, $database);

// 연결을 확인하십시오
if ($mysqli->connect_error) {
    die('연결이 실패했습니다:' . $mysqli->connect_error);
}

// 다수의 SQL 성명
$sql = "SELECT * FROM users; SELECT * FROM orders;";

// 执行多성명查询
if ($mysqli->multi_query($sql)) {
    do {
        // 현재 결과 세트를 저장하십시오
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_assoc()) {
                print_r($row);
            }
            // 결과 세트를 릴리스하십시오
            $result->free();
        }
        // 더 많은 결과 세트가 있는지 확인하십시오
    } while ($mysqli->more_results() && $mysqli->next_result());
} else {
    echo "쿼리가 실패했습니다:" . $mysqli->error;
}

// 연결을 닫으십시오
$mysqli->close();
?>

코드 구문 분석

  1. 데이터베이스 연결 설정 :
    MySQLI를 사용하여 데이터베이스에 연결하십시오.

  2. 여러 SQL 문을 준비하십시오.
    세미콜론으로 다중 쿼리 문을 별도로 분리하십시오.

  3. 다중 상태 쿼리 실행 :
    multi_query ()를 사용하여 모든 문을 실행하십시오.

  4. 결과 세트를 가로 지르기 :

    • store_result () 를 통해 현재 설정 세트를 가져옵니다.

    • fetch_assoc ()을 사용하여 데이터 라인별로 데이터를 출력하십시오.

    • 메모리를 저장하기 위해 현재 결과 세트를 자유롭게하십시오.

    • 다음 _result ()를 사용하여 모든 결과가 처리 될 때까지 다음 결과 세트로 이동하십시오.

  5. 데이터베이스 연결을 닫습니다.
    리소스를 자유롭게하고 연결을 닫으십시오.

주목해야 할 것

  • MySQLI 가 확장 한 객체 지향 모드를 사용하십시오.

  • 각 SQL 문은 세미콜론 ( ; )으로 분리되어야하며, 그렇지 않으면 구문 오류로 이어질 수 있습니다.

  • 결과를 처리 할 때 다음 _result ()를 사용하여 모든 결과 세트를 반복하십시오. 그렇지 않으면 "동기화 된 명령"오류가 발생할 수 있습니다.

실제 응용 시나리오

next_result ()는 다음 시나리오에서 일반적으로 사용됩니다.

  • 여러 테이블의 데이터 배치 쿼리.

  • 배치로 여러 업데이트를 실행, 삽입 또는 삭제하십시오.

  • 저장된 프로 시저를 실행할 때 여러 결과 세트를 반환합니다.

예를 들어, 배치 쿼리 사용자 정보 및 주문 데이터를 할 때 하나의 데이터베이스 연결만으로 두 가지 결과 세트를 얻을 수 있으며 논리를 단순화하고 효율성을 향상시킬 수 있습니다.

요약

Next_result () 는 다중 경영 쿼리를 처리하는 데 없어서는 안될 부분이며 각 결과 세트를 올바르게 처리 할 수 ​​있도록합니다. Multi_Query ()Next_result ()를 합리적으로 사용하면 데이터의 일괄 처리가 필요할 때 데이터베이스 작업의 효율성을 효과적으로 개선 할 수 있습니다.