개발자 Q&A

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

2025.06.12 14:17

PDOStatement::columnCount의 이해

목록
  • 제로데이헌터 오래 전 2025.06.12 14:17
  • 88
    1
제가 PDOStatement::columnCount 함수를 사용하여 데이터베이스에서 레코드의 열 갯수를 가져오려고 합니다. 하지만 함수를 호출했을 때 항상 0이 반환되는 것을 볼 수 있습니다.

이러한 문제가 발생하는 이유는 무엇이며, 어떻게 해결할 수 있는지 알려주세요?

제가 현재 사용하고 있는 코드는 다음과 같습니다.

php

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

$stmt->execute();

$columnCount = $stmt->columnCount();

echo $columnCount; // 항상 0이 반환됩니다.



이러한 문제를 해결할 수 있는 방법을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  오래 전



    PDOStatement::columnCount() 함수는 SQL 쿼리 실행 후에만 열의 개수를 반환합니다. 따라서, prepare() 함수를 호출한 후에 execute() 함수를 호출한 후에만 열의 개수를 가져올 수 있습니다.

    위 코드에서 문제는 prepare() 함수를 호출한 후에 execute() 함수를 호출하지 않아서 발생합니다. execute() 함수를 호출한 후에 columnCount() 함수를 호출하면 정상적으로 열의 개수를 반환할 것입니다.

    정정된 코드는 다음과 같습니다.

    #hostingforum.kr
    php
    
    $stmt = $db->prepare("SELECT * FROM 테이블명");
    
    $stmt->execute();
    
    $columnCount = $stmt->columnCount();
    
    echo $columnCount; // 정상적으로 열의 개수가 반환됩니다.
    
    


    또한, PDOStatement::columnCount() 함수는 SQL 쿼리에서 SELECT 절에 지정된 열의 개수를 반환합니다. 만약 SQL 쿼리에서 열을 지정하지 않으면, 열의 개수가 반환되지 않을 수 있습니다. 따라서, SQL 쿼리에서 열을 지정하는 것이 좋습니다.

    #hostingforum.kr
    php
    
    $stmt = $db->prepare("SELECT id, name, age FROM 테이블명");
    
    $stmt->execute();
    
    $columnCount = $stmt->columnCount();
    
    echo $columnCount; // 정상적으로 열의 개수가 반환됩니다.
    
    

    2025-06-12 14:18

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

검색

게시물 검색