PDOStatement sınıfı, PHP'de PDO (PHP Data Objects) ile çalışırken kullanılan önemli bir sınıftır. Bu sınıf, bir veritabanı sorgusunu temsil eder ve sorgunun hazırlanması, çalıştırılması ve sonuçlarının yönetilmesi gibi işlevler sunar. PDO, PHP’de farklı veritabanlarıyla çalışabilmek için evrensel bir arayüz sağlar ve PDOStatement sınıfı da bu arayüzün sorgu işlemlerini gerçekleştiren parçasıdır.
İşte PDOStatement sınıfının bazı önemli özellikleri ve yöntemleri:
Alıntı..
<?php
try {
// PDO ile veritabanına bağlanma
$pdo = new PDO("mysql:host=localhost;dbname=testdb", "username", "password");
// Sorgu hazırlama
$stmt = $pdo->prepare("SELECT id, name, email FROM users WHERE id = :id");
// Parametre bağlama
$id = 1;
$stmt->bindParam(':id', $id, PDO:ARAM_INT);
// Sorguyu çalıştırma
$stmt->execute();
// Sonuçları çekme
$result = $stmt->fetch(PDO::FETCH_ASSOC);
// Sonucu ekrana yazdırma
print_r($result);
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
?>
Bu örnekte:
İşte PDOStatement sınıfının bazı önemli özellikleri ve yöntemleri:
1. Sorgu Hazırlama ve Çalıştırma
PDO ile bir sorguyu çalıştırmadan önce, genellikle sorguyu hazırlamanız (prepare) ve ardından çalıştırmanız (execute) gerekir.// PDO bağlantısı oluşturma
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
// Sorguyu hazırlama
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
// Parametreyi bağlama ve sorguyu çalıştırma
$stmt->execute(['id' => 1]);
// Sonuçları çekme
$result = $stmt->fetchAll();
2. Parametre Bağlama
PDOStatement sınıfı, SQL enjeksiyon saldırılarına karşı güvenlik sağlamak için parametre bağlama işlevi sunar.$stmt->bindParam(':id', $id);
3. Sonuçları Çekme
Sorgu çalıştırıldıktan sonra, sonuçları çeşitli yöntemlerle alabilirsiniz:- fetch(): Tek bir satırı çeker.
- fetchAll(): Tüm satırları çeker.
- fetchColumn(): Belirli bir sütunu çeker.
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['username'];
}
4. Hata Yönetimi
Eğer bir hata olursa, PDO ya da PDOStatement sınıfı bu hataları yakalayabilir ve işlemler sırasında güvenliği sağlar.PDOStatement Sınıfının Yaygın Yöntemleri:
- execute(): Sorguyu çalıştırır.
- bindParam(): Bir değişkeni parametreye bağlar.
- bindValue(): Bir değeri parametreye bağlar.
- fetch(): Sonuç kümesinden tek bir satır getirir.
- fetchAll(): Tüm sonuçları getirir.
- rowCount(): Etkilenen satır sayısını döndürür.
Örnek Kullanım:
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
$id = 1;
$stmt->bindParam(':id', $id);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);
print_r($user);Bu şekilde PDOStatement, veritabanı işlemleri üzerinde tam kontrol sağlar ve güvenli sorgular yazmayı kolaylaştırır.
Alıntı..
PDOStatement sınıfı, PHP'nin PDO (PHP Data Objects) kütüphanesiyle veri tabanıyla etkileşim kurmak için kullanılır. Bu sınıf, bir SQL sorgusunu hazırladıktan sonra sorguyu yürütmek ve sonuçları almak gibi işlevler sunar. Aşağıda sınıfın özelliklerini, yöntemlerini açıklayıp, örnek kullanımını göstereceğim.class PDOStatement implements IteratorAggregate {
/* Özellikler */
public string $queryString;
/* Yöntemler */
public bindColumn(
string|int $sütun,
mixed &$değişken,
int $veri_türü = PDO:ARAM_STR,
int $uzunluk = 0,
mixed $seçenekler = null
): bool
public bindParam(
string|int $bağımsız_değişken,
mixed &$değişken,
int $veri_türü = PDO::ARAM_STR,
int $uzunluk = 0,
mixed $seçenekler = null
): bool
public bindValue(string|int $bağımsız_değişken, mixed $değer, int $veri_türü = PDO::ARAM_STR): bool
public closeCursor(): bool
public columnCount(): int
public debugDumpParams(): ?bool
public errorCode(): ?string
public errorInfo(): array
public execute(?array $girdiler = null): bool
public fetch(int $kip = PDO::FETCH_DEFAULT, int $göst_yönü = PDO::FETCH_ORI_NEXT, int $göst_başlangıcı = 0): mixed
public fetchAll(int $kip = PDO::FETCH_DEFAULT): array
public fetchAll(int $kip = PDO::FETCH_COLUMN, int $sütun): array
public fetchAll(int $kip = PDO::FETCH_CLASS, string $sınıf, ?array $bağımsız_değişkenler): array
public fetchAll(int $kip = PDO::FETCH_FUNC, callable $geriçağırım): array
public fetchColumn(int $sütun = 0): mixed
public fetchObject(?string $sınıf = "stdClass", array $bağımsız_değişkenler = []): object|false
public getAttribute(int $isim): mixed
public getColumnMeta(int $sütun): array|false
public getIterator(): Iterator
public nextRowset(): bool
public rowCount(): int
public setAttribute(int $öznitelik, mixed $değer): bool
public setFetchMode(int $kip): bool
public setFetchMode(int $kip = PDO::FETCH_COLUMN, int $sütunnum): bool
public setFetchMode(int $kip = PDO::FETCH_CLASS, string $sınıfadı, ?array $bağımsız_değişkenler = null): bool
public setFetchMode(int $kip = PDO::FETCH_INTO, object $nesne): bool
}
1. Özellikler
- public string $queryString: Hazırlanan SQL sorgusunun orijinal metnini tutar.
2. Yöntemler
- bindColumn: Sonuç setinden bir sütunu bir değişkene bağlar. Çekilecek veriyi doğrudan değişkene atar.
PHP:bindColumn(string|int $sütun, mixed &$değişken, int $veri_türü = PDO::PARAM_STR, int $uzunluk = 0, mixed $seçenekler = null): bool
- bindParam: SQL sorgusunda bir parametreye bir değişkeni bağlar. Bu yöntem genellikle giriş parametreleri için kullanılır. Değişken, sorgu çalıştırılmadan önce atanır.
PHP:bindParam(string|int $bağımsız_değişken, mixed &$değişken, int $veri_türü = PDO::PARAM_STR, int $uzunluk = 0, mixed $seçenekler = null): bool
- bindValue: SQL sorgusunda bir parametreye doğrudan bir değer bağlar. bindParam'dan farkı, değerin bağlanma anında sabitlenmesidir.
PHP:bindValue(string|int $bağımsız_değişken, mixed $değer, int $veri_türü = PDO::PARAM_STR): bool
Kod:
- closeCursor: Veritabanı sunucusuyla ilişkili kaynakları serbest bırakır
PHP:closeCursor(): bool
- columnCount: Sonuç setinde kaç sütun olduğunu döndürür.
PHP:columnCount(): int
- debugDumpParams: Hazırlanmış SQL sorgusunun parametrelerini ve diğer bilgileri döker.
PHP:debugDumpParams(): ?bool
- errorCode: Son hatanın SQLSTATE kodunu döndürür.
errorCode(): ?string
- errorInfo: Son hataya dair geniş bilgi döndürür.
errorInfo(): array
- execute: Hazırlanmış bir sorguyu çalıştırır.
execute(?array $girdiler = null): bool
- fetch: Sonuç setinden bir satır döndürür.
fetch(int $kip = PDO::FETCH_DEFAULT, int $göst_yönü = PDO::FETCH_ORI_NEXT, int $göst_başlangıcı = 0): mixed
- fetchAll: Sonuç setinden tüm satırları döndürür.
fetchAll(int $kip = PDO::FETCH_DEFAULT): array
- fetchColumn: Bir satırdan belirtilen sütunu döndürür.
fetchColumn(int $sütun = 0): mixed
- fetchObject: Sonuç setinden bir satırı bir nesne olarak döndürür.
fetchObject(?string $sınıf = "stdClass", array $bağımsız_değişkenler = []): object|false
- getAttribute: PDOStatement nesnesinin bir özniteliğini döndürür.
getAttribute(int $isim): mixed
- getColumnMeta: Belirtilen sütunun meta verilerini döndürür.
getColumnMeta(int $sütun): array|false
- getIterator: Sorgu sonucunu döndüren bir iterator sağlar.
getIterator(): Iterator
- nextRowset: Birden fazla sonuç seti içeren sorgularda bir sonraki seti döndürür.
nextRowset(): bool
- rowCount: Etkilenen satır sayısını döndürür.
rowCount(): int
- setAttribute: PDOStatement nesnesinin bir özniteliğini ayarlar.
setAttribute(int $öznitelik, mixed $değer): bool
- setFetchMode: Sonuç setinin nasıl döndürüleceğini belirler.
setFetchMode(int $kip): bool
Kullanım Örneği
Aşağıdaki örnek, PDO kullanarak bir veritabanına bağlanmayı, bir sorgu hazırlamayı ve sonuçları çekmeyi gösterir:<?php
try {
// PDO ile veritabanına bağlanma
$pdo = new PDO("mysql:host=localhost;dbname=testdb", "username", "password");
// Sorgu hazırlama
$stmt = $pdo->prepare("SELECT id, name, email FROM users WHERE id = :id");
// Parametre bağlama
$id = 1;
$stmt->bindParam(':id', $id, PDO:ARAM_INT);
// Sorguyu çalıştırma
$stmt->execute();
// Sonuçları çekme
$result = $stmt->fetch(PDO::FETCH_ASSOC);
// Sonucu ekrana yazdırma
print_r($result);
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
?>
Bu örnekte:
- bindParam ile :id parametresi bağlanır.
- execute ile sorgu çalıştırılır.
- fetch ile sonuçlar döndürülür.
Son düzenleme: