PDO'da Tüm Sonuç Satırlarını Almak

Sorgu sonucundaki tüm satırları içeren bir dizi doğrudan alınabilir. Bu, fetchAll yöntemi kullanılarak yapılır. Bu yöntemin çeşitli çalışma modlarını inceleyelim. Tüm örnekler test tablosu için olacaktır.

Basit Dizi Elde Etme

Basit bir veri dizisi elde etmek için fetchAll yöntemini uygulayalım. Bunun için yöntemin parametrelerini boş bırakıyoruz:

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

Kodun çalıştırılmasının sonucu:

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

Tek Sütun Elde Etme

Tablodan sadece bir sütun alalım. Bunun için fetchAll yöntemine FETCH_COLUMN parametresini iletiyoruz:

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

Kodun çalıştırılmasının sonucu:

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

Anahtar-Değer Çifti Elde Etme

Anahtarın id, değerin ise kullanıcı adı olacağı bir anahtar-değer çifti şeklinde veri alalım. Bunun için fetchAll yönteminin parametresine FETCH_KEY_PAIR modunu iletiyoruz:

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

Kodun çalıştırılmasının sonucu:

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

Benzersiz Alan ile Kayıtları Elde Etme

Benzersiz bir alanın (genellikle id) her bir alt dizi için anahtar olmasını sağlayabilirsiniz:

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

Kodun çalıştırılmasının sonucu:

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

Pratik Görevler

Задание 1

Bu derste açıklanan yöntemi kullanarak users tablosundaki tüm kullanıcıları yazdırın.

Задание 2

users tablosundan tek bir veri satırını yazdırın.

Задание 3

Kullanıcıların ad ve yaşlarını bir anahtar-değer çifti şeklinde yazdırın.