개발자 Q&A

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

2025.03.10 07:19

mysqli::$affected_rows에 대한 질문

목록
  • NestJS전문가 12일 전 2025.03.10 07:19
  • 6
    1
제가 MySQLi를 사용하여 쿼리를 실행했을 때, affected_rows를 사용하여 변경된 행의 수를 얻는 방법에 대해 궁금합니다. 하지만, 쿼리가 성공적으로 실행되었을 때만 affected_rows가 정확한 값을 반환하는 것처럼 느껴집니다.

예를 들어, INSERT INTO 쿼리를 실행한 후 affected_rows를 확인했을 때, 정상적으로 inserted된 행의 수와 동일한 값을 반환합니다. 하지만, UPDATE 쿼리를 실행한 후 affected_rows를 확인했을 때, affected_rows가 0을 반환하는 경우가 종종 있습니다.

이러한 현상은 UPDATE 쿼리가 성공적으로 실행되었을 때에도 발생합니다.

affected_rows가 UPDATE 쿼리에서 항상 정확한 값을 반환하지 않는 이유는 무엇이며, 이 문제를 해결하는 방법을 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  12일 전



    MySQLi의 affected_rows 프로퍼티는 마지막 쿼리의 영향을 받은 행의 수를 반환합니다. 하지만, UPDATE 쿼리에서 affected_rows가 항상 정확한 값을 반환하지 않는 이유는 다음과 같습니다.

    - MySQLi의 affected_rows 프로퍼티는 INSERT, UPDATE, DELETE 쿼리에서만 정확한 값을 반환합니다. 하지만, SELECT 쿼리나 SHOW 쿼리에서 affected_rows는 항상 0을 반환합니다.
    - UPDATE 쿼리에서 affected_rows가 0을 반환하는 경우는, UPDATE 쿼리가 WHERE 조건에 해당하는 행이 없을 때 발생합니다.
    - UPDATE 쿼리에서 affected_rows가 정상적으로 반환되지 않는 이유는, MySQLi의 affected_rows 프로퍼티가 UPDATE 쿼리의 영향을 받은 행의 수를 정확하게 반환하지 못하기 때문입니다.

    이 문제를 해결하는 방법은 다음과 같습니다.

    - UPDATE 쿼리에서 affected_rows를 사용하는 대신, 쿼리 결과를 COUNT 함수를 사용하여 행의 수를 계산하는 방법을 사용할 수 있습니다.
    - UPDATE 쿼리에서 affected_rows를 사용하는 대신, 쿼리 결과를 FETCH_ASSOC 함수를 사용하여 행의 수를 계산하는 방법을 사용할 수 있습니다.

    예를 들어, UPDATE 쿼리에서 affected_rows를 사용하는 대신, 쿼리 결과를 COUNT 함수를 사용하여 행의 수를 계산하는 방법을 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $stmt = $mysqli->prepare("UPDATE users SET name = ? WHERE id = ?");
    
    $stmt->bind_param("si", $name, $id);
    
    $stmt->execute();
    
    $count = $mysqli->affected_rows;
    
    


    위의 코드에서, affected_rows 프로퍼티를 사용하여 UPDATE 쿼리의 영향을 받은 행의 수를 계산할 수 있습니다. 하지만, UPDATE 쿼리에서 affected_rows가 항상 정확한 값을 반환하지 않는 경우가 발생할 수 있습니다.

    이러한 경우, 쿼리 결과를 COUNT 함수를 사용하여 행의 수를 계산하는 방법을 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $stmt = $mysqli->prepare("UPDATE users SET name = ? WHERE id = ?");
    
    $stmt->bind_param("si", $name, $id);
    
    $stmt->execute();
    
    $count = $mysqli->query("SELECT COUNT(*) FROM users WHERE id = $id")->fetch_row()[0];
    
    


    위의 코드에서, 쿼리 결과를 COUNT 함수를 사용하여 행의 수를 계산할 수 있습니다.

    2025-03-10 07:20

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

검색

게시물 검색