Toate rândurile din rezultat în PDO în PHP

Se poate obține imediat un array cu toate rândurile din rezultatul interogării. Acest lucru se face cu ajutorul metodei fetchAll. Să analizăm diferitele moduri de funcționare ale acestei metode. Toate exemplele vor fi pentru tabela de test.

Obținerea unui array simplu

Să aplicăm metoda fetchAll pentru a obține un array simplu de date. Pentru aceasta vom lăsa parametrii metodei goi:

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

Rezultatul executării codului:

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,
  ],
]

Obținerea unei singure coloane

Să obținem doar o singură coloană din tabel. Pentru aceasta vom transmite metodei fetchAll parametrul FETCH_COLUMN:

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

Rezultatul executării codului:

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

Obținerea perechii cheie-valoare

Să obținem datele sub formă de pereche cheie-valoare, unde cheia va fi id-ul, iar valoarea numele utilizatorului. Pentru aceasta în parametrul metodei fetchAll vom transmite modul FETCH_KEY_PAIR:

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

Rezultatul executării codului:

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

Obținerea înregistrărilor cu câmp unic

Se poate face astfel încât câmpul unic (în general acesta este id), să devină cheie pentru fiecare sub-array:

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

Rezultatul executării codului:

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,
  ],
]

Sarcini practice

Задание 1

Afișați toți utilizatorii din tabela users, utilizând metoda descrisă în lecție.

Задание 2

Afișați un singur rând de date din tabela users.

Задание 3

Afișați numele și vârsta utilizatorilor sub formă de pereche cheie-valoare.