แถวข้อมูลทั้งหมดจากผลลัพธ์ใน PDO ใน PHP
คุณสามารถรับอาร์เรย์ของ
แถวข้อมูลทั้งหมดจากผลลัพธ์ของคำสั่ง query ได้ทันที
ทำได้โดยใช้เมธอด 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,
],
]
การรับคอลัมน์เดียว
ลองรับเพียงคอลัมน์เดียว
จากตาราง โดยส่ง
พารามิเตอร์ FETCH_COLUMN ไปยัง
เมธอด fetchAll:
<?php
$res = $pdo->query('SELECT name FROM users');
$row = $res->fetchAll(PDO::FETCH_COLUMN);
var_dump($row);
?>
ผลลัพธ์การทำงานของโค้ด:
[
'name1',
'name2',
'name3',
'name4',
'name5',
]
การรับคู่คีย์-ค่า
ลองรับข้อมูลในรูปแบบ
คู่คีย์-ค่า โดยที่คีย์คือ id
และค่าคือชื่อผู้ใช้ โดยส่งโหมด
FETCH_KEY_PAIR ไปเป็นพารามิเตอร์
ของเมธอด fetchAll:
<?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
แสดงชื่อและอายุของผู้ใช้ ในรูปแบบคู่คีย์-ค่า