Všechny řádky z výsledku v PDO v PHP

Lze okamžitě získat pole všech řádků z výsledku dotazu. To se provádí pomocí metody fetchAll. Pojďme se podívat na různé režimy práce této metody. Všechny příklady budou pro testovací tabulku.

Získání jednoduchého pole

Aplikujme metodu fetchAll pro získání jednoduchého pole dat. K tomu ponecháme parametry metody prázdné:

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

Výsledek provedení kódu:

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

Získání jednoho sloupce

Získejme pouze jeden sloupec z tabulky. K tomu předáme do metody fetchAll parametr FETCH_COLUMN:

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

Výsledek provedení kódu:

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

Získání páru klíč-hodnota

Získejme data ve formě páru klíč-hodnota, kde klíčem bude id, a hodnotou jméno uživatele. K tomu do parametru metody fetchAll předáme režim FETCH_KEY_PAIR:

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

Výsledek provedení kódu:

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

Získání záznamů s unikátním polem

Lze zařídit, aby unikátní pole (obvykle je to id), se stalo klíčem pro každé podpole:

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

Výsledek provedení kódu:

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

Praktické úlohy

Задание 1

Vypište všechny uživatele z tabulky users, pomocí metody popsané v lekci.

Задание 2

Vypište jeden řádek dat z tabulky users.

Задание 3

Vypište jméno a věk uživatelů ve formě páru klíč-hodnota.