현재 위치: > 최신 기사 목록> php에서 next_result () 함수를 올바르게 호출하는 방법

php에서 next_result () 함수를 올바르게 호출하는 방법

gitbox 2025-04-28

PHP에서 Next_result () 함수는 MySQLI Extension 라이브러리에서 제공하는 기능입니다. 여러 쿼리 결과 세트를 처리합니다. 일반적으로 여러 쿼리가 실행되면이 기능은 여러 쿼리가 실행될 때 예기치 않은 동작을 피하기 위해 후속 결과 세트를 얻는 데 사용됩니다.

1. Next_result () 란 무엇입니까?

Next_result () 함수는 MySQLI의 일부이며 여러 SQL 쿼리를 실행할 때 모든 결과 세트를 올바르게 통과하도록 특별히 설계되었습니다. 그 목적은 더 이상 결과 세트를 사용할 수 없을 때까지 다음 결과 세트를 얻는 것입니다.

2. next_result () 함수를 사용하는 방법?

next_result () 의 사용을 더 잘 이해하려면 먼저 여러 쿼리가 포함 된 예가 필요합니다. 여러 SQL 쿼리가 포함 된 MySQL 요청을 처리한다고 가정하면 Multi_Query () 메소드를 사용하여 여러 쿼리를 한 번에 실행하고 Next_result ()를 사용하여 모든 결과 세트를 하나씩 얻을 수 있습니다.

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

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

// 다중 쿼리 문
$sql = "SELECT * FROM users; SELECT * FROM orders; SELECT * FROM products;";

// 여러 쿼리를 수행하십시오
if ($mysqli->multi_query($sql)) {
    // 첫 번째 결과 세트를 가져옵니다
    if ($result = $mysqli->store_result()) {
        echo "Users Table Results:<br>";
        while ($row = $result->fetch_assoc()) {
            echo "User: " . $row["username"] . "<br>";
        }
        $result->free();
    }

    // 다음 결과 세트를 얻으십시오
    while ($mysqli->next_result()) {
        if ($result = $mysqli->store_result()) {
            // 각 쿼리의 결과를 처리하십시오
            echo "<br>Next Result:<br>";
            while ($row = $result->fetch_assoc()) {
                echo "ID: " . $row["id"] . " - Name: " . $row["name"] . "<br>";
            }
            $result->free();
        }
    }
}

// 데이터베이스 연결을 닫습니다
$mysqli->close();
?>

위의 코드에서 먼저 Multi_Query ()를 통해 3 개의 SQL 쿼리를 실행합니다. 그런 다음 다음 _result ()를 사용하여 각 결과를 순서대로 반복하십시오. 이러한 방식으로 각 쿼리를 다시 실행하지 않고도 동일한 데이터베이스 연결에서 여러 쿼리 결과를 처리 할 수 ​​있습니다.

3. 중요한 예방 조치

  1. 전화 주문 : Next_Result ()가 호출 될 때마다 MySQLI가 다음 결과 세트로 자동 이동합니다. 더 이상 결과 세트가 없으면 함수는 false를 반환합니다.

  2. 무료 리소스 : 각 결과 세트를 얻고 처리 한 후 Free () 메소드를 사용하여 메모리 누출을 피하기 위해 쿼리 결과를 릴리스해야합니다.

  3. 오류 처리 : 여러 쿼리를 실행할 때 Multi_Query () 메소드가 오류가 발생할 수 있지만 Next_Result ()는 이전 쿼리가 완전히 처리 된 후에 만 ​​처리됩니다. 따라서 각 쿼리의 오류를 처리하고 예외 처리를 수행하십시오.

  4. 성능 고려 사항 : 여러 쿼리를 사용하면 데이터베이스 측면에서 여러 쿼리를 처리하지만 응용 프로그램 계층에서는 각 쿼리의 결과를 하나씩 읽고 처리해야합니다. 따라서 쿼리의 구조 및 데이터 볼륨이 성능에 영향을 미치지 않도록 중간 정도인지 확인하십시오.

4. 샘플 응용 프로그램 : 다른 테이블에서 데이터 처리

실제 개발에서는 여러 쿼리가 사용되며 각 쿼리의 결과는 순서대로 처리됩니다. 일반적인 응용 프로그램 시나리오에는 다른 테이블에서 데이터를 읽고 페이지에 표시하는 것이 포함됩니다. 여러 테이블에서 데이터를 결합하는 방법을 보여주는 간단한 예입니다.

 <?php
// 이것이 사용자 관리 시스템이라고 가정하십시오,먼저 사용자 테이블을 쿼리하십시오,주문 테이블을 다시 확인하십시오,제품 정보를 얻습니다
$sql = "SELECT id, username FROM users; SELECT id, order_name FROM orders; SELECT id, product_name FROM products;";

// 쿼리를 실행하십시오
if ($mysqli->multi_query($sql)) {
    // 사용자 데이터를 얻습니다
    if ($result = $mysqli->store_result()) {
        echo "Users:<br>";
        while ($row = $result->fetch_assoc()) {
            echo "ID: " . $row["id"] . " - Username: " . $row["username"] . "<br>";
        }
        $result->free();
    }

    // 주문 데이터를 얻으십시오
    while ($mysqli->next_result()) {
        if ($result = $mysqli->store_result()) {
            echo "<br>Orders:<br>";
            while ($row = $result->fetch_assoc()) {
                echo "Order ID: " . $row["id"] . " - Order Name: " . $row["order_name"] . "<br>";
            }
            $result->free();
        }
    }

    // 제품 데이터를 얻으십시오
    while ($mysqli->next_result()) {
        if ($result = $mysqli->store_result()) {
            echo "<br>Products:<br>";
            while ($row = $result->fetch_assoc()) {
                echo "Product ID: " . $row["id"] . " - Product Name: " . $row["product_name"] . "<br>";
            }
            $result->free();
        }
    }
}

$mysqli->close();
?>

이 예에서는 사용자 의 세 테이블, 주문제품 테이블에서 데이터를 성공적으로 가져오고 각 쿼리의 결과를 하나씩 처리했습니다.