현재 위치: > 최신 기사 목록> php에서 store_result ()에서 next_result ()를 사용하는 올바른 방법

php에서 store_result ()에서 next_result ()를 사용하는 올바른 방법

gitbox 2025-04-29

PHP에서 데이터베이스 작업에 MySQLI 확장을 사용하면 여러 결과 세트와 관련된 상황이 발생할 수 있습니다. 특히 저장된 프로 시저 또는 여러 쿼리 문을 실행할 때 Next_result ()Store_result () 는 일반적으로 사용되는 두 가지 기능입니다. 이 기사에서는 여러 쿼리 결과를 올바르게 처리 할 수 ​​있도록이 두 기능이 어떻게 작동하는지 살펴 봅니다.

1. next_result ()store_result () mysqli에서 함수

  • store_result () :이 함수는 쿼리 결과를 메모리에 저장하는 데 사용됩니다. 모든 데이터를 한 번에 읽고 MySQLI_RESULT 객체에 저장합니다. 쿼리 결과를 여러 장소에서 재사용 해야하는 시나리오에 적합합니다.

  • next_result () :이 함수는 여러 쿼리 문을 처리하는 데 사용됩니다. 여러 쿼리가 실행되면 다음 결과 세트를 가리키는 데 사용됩니다. 여러 결과 세트가 존재하는 경우 Next_Result ()를 호출하면 각 쿼리의 결과를 반복 할 수 있습니다.

2. 왜 함께 사용해야합니까?

여러 쿼리 (예 : 다중 선택 쿼리 또는 저장 프로 시저의 다중 결과 세트)가 포함 된 SQL 문을 실행하면 각 쿼리 결과가 올바르게 읽히고 처리되어야합니다. 이 경우 Store_result ()는 현재 쿼리의 결과를 저장하는 데 사용되며 Next_result ()는 다음 결과 세트를 가리키는 데 사용됩니다.

3. next_result ()store_result () 사용 예

데이터베이스가 있다고 가정하고 저장 프로 시저 GetMultipleresults ()가 여러 쿼리 결과를 반환합니다. 각 결과 세트를 읽고 처리 할 수 ​​있도록 store_result ()를 사용하여 현재 결과를 먼저 저장 한 다음 Next_result ()를 사용하여 다음 결과 세트를 가져와야합니다.

 <?php
// 연결을 만듭니다
$mysqli = new mysqli("localhost", "user", "password", "database");

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

// 쿼리를 실행하십시오
$query = "CALL getMultipleResults()";
if ($mysqli->multi_query($query)) {
    do {
        // 현재 결과 세트를 저장하십시오
        if ($result = $mysqli->store_result()) {
            // 처리 결과 세트
            while ($row = $result->fetch_assoc()) {
                echo "ID: " . $row['id'] . " Name: " . $row['name'] . "<br>";
            }
            $result->free();
        }
        // 다음 결과 세트를 얻으십시오
    } while ($mysqli->next_result());
} else {
    echo "쿼리가 실패했습니다: " . $mysqli->error;
}

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

4. 코드 파싱

위 코드에서 :

  1. 여러 쿼리를 포함하는 SQL 문은 multi_query ()를 사용하여 실행됩니다.

  2. do ... while 루프를 사용하여 각 쿼리 결과 세트를 처리합니다.

    • store_result ()는 현재 쿼리 결과를 메모리에 저장합니다.

    • fetch_assoc () 메소드를 통해 각 데이터 행을 가져오고 표시합니다.

  3. 결과가 없을 때까지 다음 쿼리의 결과 세트를 얻으려면 next_result () 를 사용하십시오.

5. 주목할만한 것들

  • 메모리 사용 : 쿼리 결과가 크면 store_result () 를 자주 사용하면 더 많은 메모리가 필요할 수 있습니다. 현재 사용 _result ()를 사용하여 메모리 사용을 줄이기 위해 쿼리 결과를 한 줄씩 읽을 수 있습니다.

  • 쿼리 순서 : Multi_Query () 로 여러 쿼리를 실행할 때 각 쿼리가 결과 세트를 올바르게 반환해야합니다. 그렇지 않으면 Next_Result () 가 올바르게 실행되지 않을 수 있습니다.

  • 오류 처리 : 각 쿼리의 실행 상태를 확인하여 오류가 발생하지 않는지 확인하고 쿼리 고장으로 인해 프로그램 충돌을 피하십시오.

6. 요약

next_result ()store_result () 를 결합하면 PHP의 여러 결과 세트를 처리하여 각 쿼리 결과를 올바르게 읽고 표시 할 수 있습니다. 이것은 저장된 절차 또는 여러 쿼리와 관련된 상황에 매우 유용하며 코드의 유연성과 안정성을 크게 향상시킬 수 있습니다.