현재 위치: > 최신 기사 목록> 다음 _result ()가 다음 결과 세트로 성공적으로 전환한다고 말하는 방법은 무엇입니까?

다음 _result ()가 다음 결과 세트로 성공적으로 전환한다고 말하는 방법은 무엇입니까?

gitbox 2025-05-02

데이터베이스 작업에 PHP를 사용할 때, 특히 여러 SQL 쿼리를 실행할 때 다음 _result () 메소드가 종종 필요합니다. next_result () 의 목적은 객체를 다음 쿼리의 결과 세트로 전환하는 것입니다. 그러나 문제는 다음과 같습니다.

next_result () 의 반환 값

next_result () 부울 값을 반환합니다.

  • Return True : 다음 결과 세트가 다음 결과 세트로 성공적으로 전환되었거나 다음 결과 세트가 비어 있음을 나타냅니다 (예 : 행을 반환하지 않는 업데이트 문).

  • 거짓 반환 : 더 이상 결과 세트가 없거나 스위칭 프로세스 중에 오류가 발생했음을 의미합니다.

따라서 판단하는 가장 직접적인 방법은 next_result () 의 반환 값을 확인하는 것입니다.

간단한 예를 살펴 보겠습니다.

 <?php
$mysqli = new mysqli("localhost", "user", "password", "database");

// 여러 쿼리를 수행하십시오
$sql = "SELECT * FROM users; SELECT * FROM orders;";
if ($mysqli->multi_query($sql)) {
    do {
        if ($result = $mysqli->store_result()) {
            // 현재 결과 세트를 처리하십시오
            while ($row = $result->fetch_assoc()) {
                echo "데이터 행:" . json_encode($row) . "<br>";
            }
            $result->free();
        } else {
            // 현재 진술은 아닙니다 SELECT 쿼리처럼,아마도 UPDATE、INSERT 기다리다
            if ($mysqli->errno) {
                echo "결과 세트 저장이 실패했습니다,실수:" . $mysqli->error . "<br>";
            }
        }

        // 다음 결과 세트로 전환하십시오
        if ($mysqli->more_results()) {
            if (!$mysqli->next_result()) {
                echo "다음 결과 세트로 전환하는 데 실패했습니다,실수:" . $mysqli->error . "<br>";
                break;
            }
        } else {
            // 더 이상 결과 세트가 없습니다
            break;
        }

    } while (true);
} else {
    echo "여러 쿼리를 수행하십시오失败,실수:" . $mysqli->error;
}

$mysqli->close();
?>

더 안전한 모드

누락 된 오류 감지를 피하기 위해서는 다음 _result ()를 호출 한 직후 $ mysqli-> errno 가 0인지 확인하는 것이 좋습니다. 0이 아닌 경우 next_result ()true를 반환하지만 구문 오류와 같은 프로세스 중에 오류가 발생했음을 의미합니다.

보다 엄격한 버전은 다음과 같이 쓸 수 있습니다.

 if ($mysqli->more_results()) {
    if (!$mysqli->next_result()) {
        // 发生了切换실수
        error_log("결과 세트를 전환하지 못했습니다:" . $mysqli->error);
        break;
    } elseif ($mysqli->errno) {
        // next_result() 반품 true,但实际出现了실수
        error_log("결과 세트를 전환하는 동안 예외가 발생했습니다:" . $mysqli->error);
        break;
    }
}

요약

next_result ()가 성공했는지 여부를 결정하려면 다음이되어야합니다.

  1. next_result () 의 반환 값이 true 인지 확인하십시오.

  2. $ mysqli-> errno 가 0인지 확인하십시오.

  3. 적시에 more_results ()를 사용하여 next_result ()를 호출 해야하는지 여부를 결정하십시오.

여러 쿼리가 매우 강력하지만 오류를 처리 할 때주의해야합니다. 그렇지 않으면 숨겨진 버그가 발생하기 쉽습니다.

multi_query ()next_result () 의 세부 사항에 대해 자세히 알고 싶다면 공식 문서 를 참조하십시오 (샘플 URL, 도메인 이름이 gitbox.net 으로 대체 됨).