개발자 Q&A

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

2025.06.22 10:02

PDOStatement::rowCount에 대한 질문

목록
  • Scala마법사 26일 전 2025.06.22 10:02
  • 43
    1
저는 PDOStatement::rowCount를 사용하여 데이터베이스에서 레코드를 삭제하거나 업데이트 한 후 레코드의 개수를 얻으려고 합니다.
하지만 PDOStatement::rowCount가 항상 레코드의 개수를 반환하지는 않는다고 들었습니다.
레코드의 개수를 얻기 위해서는 어떤 방법을 사용해야 하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  26일 전



    PDOStatement::rowCount는 INSERT, UPDATE, REPLACE 연산을 수행한 경우에만 레코드의 개수를 반환합니다. DELETE 연산의 경우에는 레코드의 개수를 반환하지 않습니다.

    레코드의 개수를 얻기 위해서는 PDOStatement::rowCount 대신에 SQL 명령어 내의 LAST_INSERT_ID() 또는 ROW_COUNT() 함수를 사용하거나, PDO::lastInsertId() 메서드를 사용하는 방법이 있습니다.

    예를 들어, DELETE 연산을 수행한 후 레코드의 개수를 얻으려면 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $stmt = $pdo->prepare('DELETE FROM 테이블명 WHERE 조건');
    
    $stmt->execute();
    
    
    
    $레코드개수 = $stmt->rowCount(); // 이 경우는 사용할 수 없습니다.
    
    
    
    $레코드개수 = $pdo->lastInsertId(); // 이 경우는 사용할 수 없습니다.
    
    
    
    // 대신에 다음의 방법을 사용합니다.
    
    $stmt = $pdo->prepare('SELECT COUNT(*) FROM 테이블명 WHERE 조건');
    
    $stmt->execute();
    
    $레코드개수 = $stmt->fetchColumn();
    
    


    또는 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $stmt = $pdo->prepare('DELETE FROM 테이블명 WHERE 조건');
    
    $stmt->execute();
    
    
    
    $레코드개수 = $pdo->query('SELECT ROW_COUNT()')->fetchColumn();
    
    


    또는 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $stmt = $pdo->prepare('DELETE FROM 테이블명 WHERE 조건');
    
    $stmt->execute();
    
    
    
    $레코드개수 = $pdo->query('SELECT LAST_INSERT_ID()')->fetchColumn();
    
    

    2025-06-22 10:03

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

검색

게시물 검색