PDO::prepare

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDO::prepareÇalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür

Açıklama

PDO::prepare ( string $deyim [, array $seçenekler = array() ] ) : PDOStatement

PDOStatement::execute() yöntemi ile çalıştırılmak üzere bir SQL deyimi hazırlar. SQL deyimi sıfır veya daha fazla sayıda birer isimle (:isim) veya birer soru imi (?) ile ifade edilen değiştirge içerebilir. Deyimin çalıştırılması sırasında bu değiştirgelere farklı değerler atanarak aynı deyim defalarca kullanılabilir. Aynı SQL deyiminde hem isimli hem de soru imli değiştirgeleri kullanamazsınız. İkisinden birini seçmek zorundasınız.

PDOStatement::execute() işlevinde aktaracağınız her değer için eşsiz bir değiştirge imleyici belirtmelisiniz. İsimli değiştirgeler eşsiz olmak zorundadır, aynı ismi birden fazla değiştirgede kullanamazsınız. Çok sayıda değeri, örneğin bir SQL deyiminin IN cümleciğinde tek bir isimli değiştirgeyle ilişkilendiremezsiniz.

Bir SQL deyiminin farklı değerlerle defalarca çalıştırılmak üzere PDO::prepare() ve PDOStatement::execute() yöntemlerine aktarılması, bu SQL deyimiyle ilgili sorgu planının ve temel verilerin müzakere edilmek üzere sürücü tarafından istemci ve/veya sunucu tarafında önbelleklemesiyle uygulamanızın başarımını yükseltecek en iyilemelerin yapılması mümkün olur ve değiştirgelerin elle öncelenmesi gereğini ortadan kaldırarak SQL zerk saldırılarını engellemeye yardımcı olur.

Değiştirgeli hazır deyimlerin değerlerle ilişkilendirilmesi işlemini desteklemeyen sürücüler için PDO bu işlemi taklit eder. Ayrıca sürücü isimli ve soru imli değiştirge aktarım tarzlarından yalnız birini destekliyorsa PDO diğer tarzı da taklit eder.

Değiştirgeler

deyim

Hedef veritabanı sunucusu için geçerli bir SQL deyimi olmalıdır.

seçenekler

Bu yöntemden döndürülen PDOStatement nesnesi için atanacak öznitelik değerlerini isim=>değer çiftleri halinde içeren bir dizi. Çoğunlukla kaydırılabilen bir gösterici isteği için PDO::CURSOR_SCROLL özniteliğine PDO::ATTR_CURSOR değerini atamakta kullanılır. Bazı sürücülerin deyimin hazırlanması aşamasında atanabilen sürücüye özgü öznitelikleri vardır.

Dönen Değerler

Veritabanı sunucusu deyimi başarıyla hazırlayabilmişse PDO::prepare() bir PDOStatement nesnesi döndürür; aksi takdirde bir PDOException istisnası oluşur.

Bilginize:

Taklit hazır deyimler için veritabanı sunucusuyla müzakere yapılmadığından PDO::prepare() deyim üzerinde bir sınama yapmaz.

Örnekler

Örnek 1 - İsimli değiştirgelerle bir SQL deyiminin hazırlanması

<?php
/* Değerleri bir dizi olarak aktaracağımız bir deyim hazırlayalım */
$sql 'SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour'
;
$sth $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150':colour' => 'red'));
$red $sth->fetchAll();
$sth->execute(array('calories' => 175'colour' => 'yellow'));
$yellow $sth->fetchAll();
?>

Örnek 2 - Soru imli değiştirgelerle bir SQL deyiminin hazırlanması

<?php
/* Değerleri bir dizi olarak aktaracağımız bir deyim hazırlayalım */
$sth $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?'
);
$sth->execute(array(150'red'));
$red $sth->fetchAll();
$sth->execute(array(175'yellow'));
$yellow $sth->fetchAll();
?>

Ayrıca Bakınız

  • PDO::exec() - Belirtilen SQL deyimini çalıştırır ve etkilenen satır sayısını döndürür
  • PDO::query() - Bir SQL deyimini çalıştırıp sonucu bir PDOStatement nesnesi olarak döndürür
  • PDOStatement::execute() - Bir hazır deyimi çalıştırır