현재 위치: > 최신 기사 목록> Next_result ()를 사용하여 멀티 쿼리 리턴 페이징 로직을 구현하십시오

Next_result ()를 사용하여 멀티 쿼리 리턴 페이징 로직을 구현하십시오

gitbox 2025-05-02

데이터베이스 작업에 PHP를 사용하는 경우 여러 쿼리를 실행하고 이러한 쿼리의 결과를 처리해야합니다. 일부 복잡한 쿼리의 경우 여러 쿼리로 반환 된 페이징 로직을 사용해야 할 수도 있습니다. 다음 _result () 함수는 이러한 종류의 시나리오에서 매우 유용합니다. 특히 페이징이 필요한 경우 여러 쿼리 결과를 효과적으로 처리하는 데 도움이됩니다.

다음 _result () 함수는 무엇입니까?

Next_result () 는 PHP의 MySQLI 확장 기능의 함수입니다. 여러 쿼리를 실행할 때 각 쿼리의 결과를 하나씩 얻을 수 있습니다. mysqli_multi_query () 함수를 사용하여 여러 쿼리를 실행하면 Next_result ()를 사용하면 각 쿼리의 결과를 통해 루프 할 수 있습니다.

일반적으로 mysqli_multi_query ()는 여러 SQL 쿼리를 실행하는 데 사용되는 반면 Next_Result ()를 사용하면 각 쿼리의 결과를 하나씩 가져 와서 각 반복에서 데이터를 처리 할 수 ​​있습니다.

시나리오를 사용하십시오

여러 쿼리 결과를 처리 할 때는 페이지 매김 기능이 필요할 수 있습니다. 예를 들어, 여러 페이징 쿼리 결과가 있으면 각 쿼리의 결과를 차례로 가져와야합니다. 현재 Next_result ()는 다음 쿼리의 결과 세트로 효과적으로 뛰어 들어 혼란과 복제 처리를 피할 수 있습니다.

샘플 코드

여러 페이징 쿼리 결과가 포함 된 데이터베이스가 있다고 가정하면 다음 코드를 사용하여 페이징을 구현할 수 있습니다.

 <?php
// 데이터베이스 연결
$mysqli = new mysqli("localhost", "username", "password", "database");

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

// 여러 쿼리를 수행하십시오
$query = "SELECT * FROM table1 LIMIT 10; 
          SELECT * FROM table2 LIMIT 10; 
          SELECT * FROM table3 LIMIT 10;";

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());
}

// 关闭데이터베이스 연결
$mysqli->close();
?>

코드 코드

  1. 데이터베이스 연결 : 먼저 새로운 mysqli ()를 통해 데이터베이스 연결 객체 $ mysqli를 생성하고 로컬 데이터베이스에 연결합니다.

  2. 멀티 쿼리 실행 : Multi_Query () 함수를 사용하여 여러 쿼리를 실행하십시오. 여기서는 3 개의 쿼리를 실행합니다. 각각은 한계를 사용하여 결과 세트를 10 개의 레코드로 제한합니다.

  3. 각 결과 세트를 처리하십시오 . store_result () 를 통해 각 쿼리의 결과 세트를 가져온 다음 fetch_assoc ()를 사용하여 결과를 하나씩 출력하십시오.

  4. Next_result () 사용 : 각 쿼리 결과가 처리되면 Next_result ()를 통해 다음 쿼리 결과 세트로 이동하십시오.

  5. 데이터베이스 연결 닫기 : 작업이 완료된 후 데이터베이스 연결을 닫으십시오.

페이징을 구현하는 방법

여러 쿼리 결과에 대한 페이징 로직을 구현하려면 next_result () 이후 각 쿼리 결과를 처리 할 수 ​​있습니다. 예를 들어, 각 쿼리가 10 개의 레코드를 반환하면 다음 코드와 유사한 페이지별로 데이터를 표시 할 수 있습니다.

 <?php
$perPage = 10; // 페이지 당 레코드 수
$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($currentPage - 1) * $perPage;

// 데이터베이스 연결
$mysqli = new mysqli("localhost", "username", "password", "database");

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

// 페이지 매김 쿼리를 수행하십시오
$query = "SELECT * FROM table1 LIMIT $offset, $perPage;
          SELECT * FROM table2 LIMIT $offset, $perPage;
          SELECT * FROM table3 LIMIT $offset, $perPage;";

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());
}

// 关闭데이터베이스 연결
$mysqli->close();
?>

이 예에서는 오프셋을 동적으로 계산하고 현재 페이지 수에 따라 쿼리 조건을 조정하며 페이징 기능을 구현합니다.

주목해야 할 것

  1. 쿼리 순서 : next_result ()를 사용하면 쿼리 순서가 매우 중요합니다. 각 쿼리 결과를 올바른 순서로 처리해야합니다.

  2. 자원 관리 : 각 쿼리 결과가 처리 된 후에는 무료 () 에게 전화하여 리소스를 해제해야합니다.

  3. 성능 고려 사항 : Multi_Query ()를 사용하여 여러 쿼리를 실행할 때 데이터 양이 크면 성능에 영향을 줄 수 있습니다. 페이징을 합리적으로 사용하고 한 번에 너무 많은 데이터를 쿼리하지 마십시오.

결론

Next_result () 함수를 통해 여러 쿼리 결과의 페이징 처리를 쉽게 구현할 수 있습니다. 이는 여러 데이터베이스 쿼리를 실행 해야하는 시나리오에 매우 적합하며 각 쿼리 결과는 페이지를 찍습니다. 이 기사에 제공된 샘플 코드 가이 기능을 더 잘 이해하고 적용하는 데 도움이되기를 바랍니다.