개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.17 22:02

mysqli_stmt::more_results 함수에 대한 문의

목록
  • Go매니아 22시간 전 2025.07.17 22:02 새글
  • 14
    1
저는 mysqli_stmt::more_results 함수를 사용하여 쿼리 결과가 더 있는지 확인하고자 합니다.
하지만 이 함수의 동작 방식에 대해 조금 혼란스럽습니다.

mysqli_stmt::more_results 함수는 다음 쿼리가 더 있는지 여부를 확인하는 데 사용됩니다.
하지만 이 함수를 사용하면 다음 쿼리가 더 있는지 여부를 확인하는 것과 동시에 다음 쿼리가 실행되는 것처럼 보입니다.

이러한 문제가 발생하는 이유는 무엇이며, 이 함수를 사용하는 것이 안전한지 궁금합니다.

예를 들어, 다음과 같이 쿼리를 실행한 후 mysqli_stmt::more_results 함수를 사용하면 다음 쿼리가 실행되는 것처럼 보입니다.

php

$stmt = $mysqli->prepare("SELECT * FROM 테이블");

$stmt->execute();

$stmt->bind_result($var1, $var2);

while ($stmt->fetch()) {

    // 쿼리 결과를 처리합니다.

}



$result = $stmt->more_results();

if ($result) {

    // 다음 쿼리가 더 있는지 여부를 확인합니다.

    // 그러나 다음 쿼리가 실행되는 것처럼 보입니다.

}



mysqli_stmt::more_results 함수를 사용하는 것이 안전한지 궁금합니다.

혹시 이 함수를 사용하는 방법을 알려주시거나, 이 함수가 동작하는 방식을 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  22시간 전



    mysqli_stmt::more_results 함수는 쿼리 결과가 더 있는지 여부를 확인하는 데 사용됩니다. 이 함수를 사용하면 다음 쿼리가 더 있는지 여부를 확인하는 것과 동시에 다음 쿼리가 실행되는 것처럼 보일 수 있습니다.

    이러한 문제가 발생하는 이유는 MySQL Connector/PHP가 내부적으로 쿼리를 실행하는 방식 때문입니다. MySQL Connector/PHP는 쿼리를 실행할 때 내부적으로 쿼리를 여러 번 실행할 수 있습니다. 예를 들어, 쿼리가 여러 행을 반환하는 경우 MySQL Connector/PHP는 내부적으로 쿼리를 여러 번 실행하여 결과를 반환합니다.

    mysqli_stmt::more_results 함수를 사용할 때는 이러한 내부적인 쿼리 실행을 고려해야 합니다. 이 함수를 사용하면 다음 쿼리가 더 있는지 여부를 확인하는 것과 동시에 다음 쿼리가 실행되는 것처럼 보일 수 있습니다.

    이러한 문제를 해결하기 위해, 쿼리 결과를 처리하는 반복문을 사용할 때는 mysqli_stmt::more_results 함수를 사용하기 전에 반복문을 종료하는 방법을 사용할 수 있습니다. 예를 들어, 다음과 같이 쿼리 결과를 처리하는 반복문을 종료하고 mysqli_stmt::more_results 함수를 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $stmt = $mysqli->prepare("SELECT * FROM 테이블");
    
    $stmt->execute();
    
    $stmt->bind_result($var1, $var2);
    
    while ($stmt->fetch()) {
    
        // 쿼리 결과를 처리합니다.
    
        break; // 반복문을 종료합니다.
    
    }
    
    
    
    $result = $stmt->more_results();
    
    if ($result) {
    
        // 다음 쿼리가 더 있는지 여부를 확인합니다.
    
    }
    
    


    또한, mysqli_stmt::more_results 함수를 사용하기 전에 mysqli_stmt::next_result 함수를 사용하여 다음 쿼리를 실행하는 것을 방지할 수 있습니다. 예를 들어, 다음과 같이 mysqli_stmt::more_results 함수를 사용하기 전에 mysqli_stmt::next_result 함수를 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $stmt = $mysqli->prepare("SELECT * FROM 테이블");
    
    $stmt->execute();
    
    $stmt->bind_result($var1, $var2);
    
    while ($stmt->fetch()) {
    
        // 쿼리 결과를 처리합니다.
    
    }
    
    
    
    $stmt->next_result(); // 다음 쿼리를 실행하는 것을 방지합니다.
    
    $result = $stmt->more_results();
    
    if ($result) {
    
        // 다음 쿼리가 더 있는지 여부를 확인합니다.
    
    }
    
    


    이러한 방법을 사용하면 mysqli_stmt::more_results 함수를 사용할 때 발생하는 문제를 해결할 수 있습니다.

    2025-07-17 22:03

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 36,981건 / 12 페이지

검색

게시물 검색