CodeBlanks Logo Icon CodeBlanks

query() ile sorgu çalıştırma

PHP kursu · İleri seviye · Ders 3/92

query() ile doğrudan SQL sorgusu çalıştırmayı öğrenirsin.

query() ile SQL çalıştırma

query() bir SQL sorgusunu çalıştırır ve bir PDOStatement nesnesi döndürür. Sonuç satırlarını bu nesneden okursun.

Örnek: $stmt = $pdo->query("SELECT name FROM users"). Dönen $stmt üzerinden fetch() veya fetchAll() çağrılır.

query() yalnızca dışarıdan değer içermeyen sabit SQL içindir. Kullanıcıdan gelen veri varsa prepare() kullanılır; bu konuya sonraki grupta geçeceğiz.

query() ve exec() farkı

query() ve exec() farklı işler yapar. query() SELECT gibi satır döndüren sorgular içindir; sonucu bir PDOStatement olarak verir.

exec() ise INSERT, UPDATE, DELETE gibi satır döndürmeyen sorgular içindir; etkilenen satır sayısını tamsayı olarak döndürür.

Yani satır okuyacaksan query(), değişiklik yapacaksan exec() kullanırsın.

Uygulama query() ile ilk adı yazdır

Bellek içi SQLite'ta users tablosu oluştur, üç kullanıcı ekle. query() ile SELECT name FROM users ORDER BY id çalıştır; fetch(PDO::FETCH_ASSOC) ile ilk satırı al ve name alanını yazdır.

Örnek çözümü göster
:FETCH_ASSOC); ile ilk satırı al. echo $row['name'] . "\n"; ile yazdır.
Örnek çözüm:
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)");
$pdo->exec("INSERT INTO users (name) VALUES ('Ayşe')");
$pdo->exec("INSERT INTO users (name) VALUES ('Ali')");
$pdo->exec("INSERT INTO users (name) VALUES ('Deniz')");
$stmt = $pdo->query("SELECT name FROM users ORDER BY id");
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo $row['name'] . "\n";

Kendini test et

  1. query() ne zaman kullanılır?

    • Kullanıcıdan gelen değeri SQL'e gömmek için
    • Sorguyu derleyip sonra çalıştırmak için
    • Dış değer içermeyen sabit SQL'i çalıştırmak için
    • Hataları sessizce yutmak için
    Cevabı göster

    Dış değer içermeyen sabit SQL'i çalıştırmak için — Doğru. query() sabit SQL için uygundur; dış değer gerekiyorsa prepare() kullanılır.

  2. SELECT için doğru metodu seç

    <?php
    $pdo = new PDO('sqlite::memory:');
    $pdo->exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)");
    $pdo->exec("INSERT INTO users (name) VALUES ('Ayşe')");
    $stmt = $pdo->____("SELECT name FROM users");
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    echo $row['name'] . "\n";
    ?>
    Cevabı göster
    <?php
    $pdo = new PDO('sqlite::memory:');
    $pdo->exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)");
    $pdo->exec("INSERT INTO users (name) VALUES ('Ayşe')");
    $stmt = $pdo->query("SELECT name FROM users");
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    echo $row['name'] . "\n";
    ?>
  3. query ve exec kavramlarını eşleştir

    query()
    Satır döndüren SELECT
    exec()
    INSERT, UPDATE, DELETE
    PDOStatement
    query() döndürür
    etkilenen satır
    exec() döndürür

İleri seviye bölümündeki tüm dersler