Alle rader fra resultatet i PDO i PHP

Man kan umiddelbart få en matrise med alle radene fra spørringsresultatet. Dette gjøres ved hjelp av metoden fetchAll. La oss se på de forskjellige modusene for hvordan denne metoden fungerer. Alle eksempler vil være for testtabellen.

Hente en enkel matrise

La oss bruke metoden fetchAll for å hente en enkel datamatrise. For å gjøre dette lar vi parameterne til metoden stå tomme:

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

Resultat av kodekjøring:

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

Hente en enkelt kolonne

La oss hente bare en enkelt kolonne fra tabellen. For å gjøre dette sender vi parameteren FETCH_COLUMN til metoden fetchAll:

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

Resultat av kodekjøring:

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

Hente nøkkel-verdi-par

La oss hente data i form av nøkkel-verdi-par, hvor nøkkelen vil være id, og verdien vil være brukerens navn. For å gjøre dette sender vi modusen FETCH_KEY_PAIR som en parameter til metoden fetchAll:

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

Resultat av kodekjøring:

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

Hente poster med et unikt felt

Man kan gjøre slik at det unike feltet (som regel er dette id) blir nøkkelen for hvert undermatrise:

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

Resultat av kodekjøring:

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

Praktiske oppgaver

Задание 1

Skriv ut alle brukere fra tabellen users, ved å bruke metoden beskrevet i leksjonen.

Задание 2

Skriv ut en enkelt rad med data fra tabellen users.

Задание 3

Skriv ut navn og alder på brukere i form av nøkkel-verdi-par.