PHP PDO에서 결과의 모든 행 가져오기

쿼리 결과의 모든 행을 배열로 바로 가져올 수 있습니다. 이는 fetchAll 메서드를 사용하여 수행됩니다. 이 메서드의 다양한 작동 모드를 살펴보겠습니다. 모든 예제는 테스트 테이블을 기준으로 합니다.

단순 배열 가져오기

fetchAll 메서드를 사용하여 단순 데이터 배열을 가져와 봅시다. 이를 위해 메서드 매개변수를 비워둡니다:

php<?php
  $res = $pdo->query('SELECT * FROM users');
  
  $row = $res->fetchAll();
  var_dump($row);
?>

코드 실행 결과:

php[
  [
    'id'     => 1,
    'name'   => 'name1',
    'age'    => 21,
    'salary' => 500,
  ],
  [
    'id'     => 2,
    'name'   => 'name2',
    'age'    => 22,
    'salary' => 600,
  ],
  [
    'id'     => 3,
    'name'   => 'name3',
    'age'    => 23,
    'salary' => 600,
  ],
  [
    'id'     => 4,
    'name'   => 'name4',
    'age'    => 24,
    'salary' => 700,
  ],
  [
    'id'     => 5,
    'name'   => 'name5',
    'age'    => 25,
    'salary' => 800,
  ],
]

단일 컬럼 가져오기

테이블에서 한 개의 컬럼만 가져와 봅시다. 이를 위해 fetchAll 메서드에 FETCH_COLUMN 매개변수를 전달합니다:

php<?php
  $res = $pdo->query('SELECT name FROM users');
  
  $row = $res->fetchAll(PDO::FETCH_COLUMN);
  var_dump($row);
?>

코드 실행 결과:

php[
  'name1',
  'name2',
  'name3',
  'name4',
  'name5',
]

키-값 쌍 가져오기

키가 id이고 값이 사용자 이름인 키-값 쌍 형태로 데이터를 가져와 봅시다. 이를 위해 fetchAll 메서드의 매개변수에 FETCH_KEY_PAIR 모드를 전달합니다:

php<?php
  $res = $pdo->query('SELECT id, name FROM users');
  
  $row = $res->fetchAll(PDO::FETCH_KEY_PAIR);
  var_dump($row);
?>

코드 실행 결과:

php[
  1 => 'name1',
  2 => 'name2',
  3 => 'name3',
  4 => 'name4',
  5 => 'name5',
]

고유 필드를 가진 레코드 가져오기

고유 필드(일반적으로 id)를 각 하위 배열의 키로 만들 수 있습니다:

php<?php
  $res = $pdo->query('SELECT * FROM users');
  
  $row = $res->fetchAll(PDO::FETCH_UNIQUE);
  var_dump($row);
?>

코드 실행 결과:

php[
  1 => [
    'id'     => 1,
    'name'   => 'name1',
    'age'    => 21,
    'salary' => 500,
  ],
  2 => [
    'id'     => 2,
    'name'   => 'name2',
    'age'    => 22,
    'salary' => 600,
  ],
  3 => [
    'id'     => 3,
    'name'   => 'name3',
    'age'    => 23,
    'salary' => 600,
  ],
  4 => [
    'id'     => 4,
    'name'   => 'name4',
    'age'    => 24,
    'salary' => 700,
  ],
  5 => [
    'id'     => 5,
    'name'   => 'name5',
    'age'    => 25,
    'salary' => 800,
  ],
]

실습 문제

Задание 1

본 강의에서 설명한 메서드를 사용하여 users 테이블에서 모든 사용자를 출력하세요.

Задание 2

users 테이블에서 한 행의 데이터를 출력하세요.

Задание 3

사용자의 이름과 나이를 키-값 쌍 형태로 출력하세요.