Visos eilutės iš rezultato PDO PHP

Galima iš karto gauti visų eilučių iš užklausos rezultato masyvą. Tai daroma naudojant metodą fetchAll. Panagrinėkime įvairius šio metodo veikimo režimus. Visi pavyzdžiai bus skirti testinei lentelei.

Paprasto masyvo gavimas

Panaudokime metodą fetchAll paprastiems duomenims gauti. Tam palikime metodo parametrus tuščius:

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

Kodo vykdymo rezultatas:

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

Vieno stulpelio gavimas

Gaukime tik vieną stulpelį iš lentelės. Tam perduokime į metodą fetchAll parametrą FETCH_COLUMN:

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

Kodo vykdymo rezultatas:

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

Rakto ir reikšmės poros gavimas

Gaukime duomenis formoje rakto ir reikšmės poros, kur raktas bus id, o reikšmė vartotojo vardas. Tam į parametrą metodo fetchAll perduosime 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);
?>

Kodo vykdymo rezultatas:

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

Įrašų su unikaliu lauku gavimas

Galima padaryti taip, kad unikalus laukas (paprastai tai id), taptų kiekvieno submasyvo raktu:

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

Kodo vykdymo rezultatas:

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

Praktinės užduotys

Задание 1

Išveskite visus vartotojus iš lentelės users, naudodami pamokoje aprašytą metodą.

Задание 2

Išveskite vieną duomenų eilutę iš lentelės users.

Задание 3

Išveskite vartotojų vardą ir amžių raktų ir reikšmių porų pavidalu.