PHP PDO에서 결과의 모든 행 가져오기
쿼리 결과의 모든 행을 배열로 바로 가져올 수 있습니다.
이는 fetchAll 메서드를 사용하여 수행됩니다.
이 메서드의 다양한 작동 모드를 살펴보겠습니다.
모든 예제는 테스트 테이블을 기준으로 합니다.
단순 배열 가져오기
fetchAll 메서드를 사용하여
단순 데이터 배열을 가져와 봅시다.
이를 위해 메서드 매개변수를
비워둡니다:
<?php
$res = $pdo->query('SELECT * FROM users');
$row = $res->fetchAll();
var_dump($row);
?>
코드 실행 결과:
[
[
'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
$res = $pdo->query('SELECT name FROM users');
$row = $res->fetchAll(PDO::FETCH_COLUMN);
var_dump($row);
?>
코드 실행 결과:
[
'name1',
'name2',
'name3',
'name4',
'name5',
]
키-값 쌍 가져오기
키가 id이고 값이 사용자 이름인
키-값 쌍 형태로 데이터를 가져와 봅시다.
이를 위해 fetchAll 메서드의 매개변수에
FETCH_KEY_PAIR 모드를 전달합니다:
<?php
$res = $pdo->query('SELECT id, name FROM users');
$row = $res->fetchAll(PDO::FETCH_KEY_PAIR);
var_dump($row);
?>
코드 실행 결과:
[
1 => 'name1',
2 => 'name2',
3 => 'name3',
4 => 'name4',
5 => 'name5',
]
고유 필드를 가진 레코드 가져오기
고유 필드(일반적으로 id)를 각
하위 배열의 키로 만들 수 있습니다:
<?php
$res = $pdo->query('SELECT * FROM users');
$row = $res->fetchAll(PDO::FETCH_UNIQUE);
var_dump($row);
?>
코드 실행 결과:
[
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,
],
]
실습 문제
본 강의에서 설명한 메서드를 사용하여
users 테이블에서
모든 사용자를 출력하세요.
users 테이블에서
한 행의 데이터를 출력하세요.
사용자의 이름과 나이를 키-값 쌍 형태로 출력하세요.