query() ile sorgu çalıştırma
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
-
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.
-
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"; ?> -
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