แถวข้อมูลทั้งหมดจากผลลัพธ์ใน PDO ใน PHP

คุณสามารถรับอาร์เรย์ของ แถวข้อมูลทั้งหมดจากผลลัพธ์ของคำสั่ง query ได้ทันที ทำได้โดยใช้เมธอด 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,
  ],
]

การรับคอลัมน์เดียว

ลองรับเพียงคอลัมน์เดียว จากตาราง โดยส่ง พารามิเตอร์ FETCH_COLUMN ไปยัง เมธอด fetchAll:

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 และค่าคือชื่อผู้ใช้ โดยส่งโหมด FETCH_KEY_PAIR ไปเป็นพารามิเตอร์ ของเมธอด fetchAll:

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

แสดงชื่อและอายุของผู้ใช้ ในรูปแบบคู่คีย์-ค่า