개발자 Q&A

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

2025.08.02 20:32

PDOStatement::setFetchMode에 관한 질문입니다.

목록
  • GooglePlay매니아 23시간 전 2025.08.02 20:32 새글
  • 3
    1
PDOStatement::setFetchMode 사용법에 대해 알려주세요

안녕하세요 선생님,
PHP에서 PDO를 사용하여 데이터베이스 연동을 할 때, PDOStatement::setFetchMode를 사용하여 데이터를 가져올 때의 데이터 형식을 지정할 수 있습니다.
그런데 이 메서드의 사용법을 제대로 이해하지 못해 질문드립니다.

setFetchMode의 파라미터로 PDO::FETCH_ASSOC, PDO::FETCH_BOTH, PDO::FETCH_NUM, PDO::FETCH_OBJ 등이 있습니다.
그 중 PDO::FETCH_ASSOC을 사용할 때,
fetch() 함수를 사용하여 데이터를 가져올 때,
fetch() 함수의 결과는 array 형식으로 리턴되는데,
이 때 array의 키는 column 이름이 아닌 column 인덱스 값을 가집니다.

이런 경우, fetchAll() 함수를 사용하여 데이터를 가져올 때,
fetchAll() 함수의 결과도 array 형식으로 리턴되는데,
이 때 array의 키는 column 이름을 가집니다.

이와 같이 fetch() 함수와 fetchAll() 함수의 결과 형식이 다르다는 것을 알고 싶습니다.
fetch() 함수의 결과 형식은 column 인덱스 값을 가지는 array 형식이고,
fetchAll() 함수의 결과 형식은 column 이름을 가지는 array 형식입니다.

이런 경우, fetch() 함수를 사용하여 데이터를 가져올 때,
fetch() 함수의 결과 형식이 column 인덱스 값을 가지는 array 형식인 것을 어떻게 알 수 있는지,
아니면 어떤 방법으로 column 이름을 가지는 array 형식으로 변환할 수 있는지,
아니면 column 이름을 가지는 array 형식으로 변환하는 방법은 없을까요?

위와 같은 부분에 대해 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  23시간 전



    PDOStatement::setFetchMode는 fetch() 함수의 결과 형식을 지정하는 메서드입니다.

    fetch() 함수의 결과 형식은 setFetchMode의 파라미터에 따라 결정됩니다.

    예를 들어, PDO::FETCH_ASSOC을 사용할 때, fetch() 함수의 결과는 array 형식으로 리턴되는데, array의 키는 column 이름을 가집니다.

    이와 같이 fetch() 함수의 결과 형식은 setFetchMode의 파라미터에 따라 결정됩니다.

    fetchAll() 함수의 결과 형식은 setFetchMode의 파라미터와 상관없이 array 형식으로 리턴되는데, array의 키는 column 이름을 가집니다.

    fetch() 함수의 결과 형식을 array 형식으로 변환하는 방법은 다음과 같습니다.

    #hostingforum.kr
    php
    
    $stmt = $pdo->prepare("SELECT * FROM 테이블명");
    
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    
    $result = $stmt->fetch();
    
    
    
    // array 형식으로 변환
    
    $result = array_change_key_case($result, CASE_LOWER);
    
    


    또는

    #hostingforum.kr
    php
    
    $stmt = $pdo->prepare("SELECT * FROM 테이블명");
    
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    
    $result = $stmt->fetch();
    
    
    
    // array 형식으로 변환
    
    $result = array_map(function($key, $value) {
    
        return [$key => $value];
    
    }, array_keys($result), $result);
    
    


    fetchAll() 함수의 결과 형식을 array 형식으로 변환하는 방법은 다음과 같습니다.

    #hostingforum.kr
    php
    
    $stmt = $pdo->prepare("SELECT * FROM 테이블명");
    
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    
    $result = $stmt->fetchAll();
    
    
    
    // array 형식으로 변환
    
    $result = array_map(function($row) {
    
        return array_change_key_case($row, CASE_LOWER);
    
    }, $result);
    
    


    또는

    #hostingforum.kr
    php
    
    $stmt = $pdo->prepare("SELECT * FROM 테이블명");
    
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    
    $result = $stmt->fetchAll();
    
    
    
    // array 형식으로 변환
    
    $result = array_map(function($row) {
    
        return array_map(function($key, $value) {
    
            return [$key => $value];
    
        }, array_keys($row), $row);
    
    }, $result);
    
    

    2025-08-02 20:33

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

검색

게시물 검색