PDO::prepare
  (PHP 5 >= 5.1.0, PHP 7, PHP 8, PHP 8,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
  
  
   PDOStatement::execute() işlevinde aktaracağınız her
   değer için eşsiz bir bağımsız değişken imleyici belirtmelisiniz.
   Öykünme kipi açık olmadığı sürece, hazırlanmış bir ifadede aynı ismi birden
   fazla isimli bağımsız değişken işaretçisinde kullanamazsınız.
  
  Bilginize: 
   
    Bağımsız değişken işaretçileri yalnızca eksiksiz bir değişmez veriyi temsil
    edebilir. Ne değişmez parçasının, ne anahtar sözcük, ne tanımlayıcı ne de
    herhangi bir keyfi sorgu parçasının bağımsız değişken kullanılarak bağlanması
    mümkün değildir. Örneğin, bir SQL ifadesinin IN() yan tümcesinde tek bir
    bağımsız değişkene birden çok değer bağlayamazsınız.
   
  
  
   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.
   Ayrıca, PDO::prepare() ve
   PDOStatement::execute() işlevlerinin kullanımı,
   bağımsız değişkenlerin elle öncelenmesi gereğini ortadan kaldırarak SQL zerk
   saldırılarını engellemeye yardımcı olur.
  
  
   Bağımsız değişkenli 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 bağımsız değişken aktarım tarzlarından yalnız birini
   destekliyorsa PDO diğer tarzı da taklit eder.
  
  Bilginize: 
   
    Öykünülmüş hazırlanmış ifadeler ve isimli veya soru işareti tarzı
    bağımsız değişkenlerinin yeniden yazılması için kullanılan çözümleyici, tek ve
    çift tırnaklar için standart olmayan tersbölülü öncelemeyi destekler. Bu,
    bir tersbölü ile öncelenmiş sonlandırma tırnaklarında bu kullanımın
    desteklenmediği anlamına gelir, bu da bağımsız değişkenlerin yanlış algılanmasına
    neden olarak hazırlanan ifadenin yürütüldüğünde başarısız olmasına sebep
    olabilir. Çözüm, bu tür SQL sorguları için öykünülmüş hazırlıklar
    kullanmamak ve sürücü tarafından yerel olarak desteklenen bir bağımsız değişken
    tarzı kullanarak bağımsız değişkenlerin yeniden yazılmasını önlemektir.
   
  
  
   PHP 7.4.0 ve sonrasında, soru imleri kendileri ile öncelenebiliyor. Yani,
   ?? dizgesi artık veritabanına ?
   dizgesi olartak gönderiliyor.
  
  
 
  Bağımsız Değişkenler
  
   
    
     - deyim
- 
      
       Hedef veritabanı sunucusu için geçerli bir SQL deyimi şablonu 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ğinePDO::ATTR_CURSORdeğ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 ya bir
   PDOException yavrulanır veya işlev false döndürür
   (hata işlemeye bağımlı olarak).
  
  Bilginize: 
   
    Öykünülmüş hazır deyimler için veritabanı sunucusuyla müzakere
    yapılmadığından PDO::prepare() deyim üzerinde bir
    sınama yapmaz.
   
  
  
 
 
  Örnekler
  
   
    Örnek 1 - İsimli bağımsız değişkenli SQL deyim şablonu
    
<?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, [PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY]);
$sth->execute(['calories' => 150, 'colour' => 'red']);
$red = $sth->fetchAll();
/* Dizi anahtarları ":" ile de öncelenebiliyor (seçimlik) */
$sth->execute([':calories' => 175, ':colour' => 'yellow']);
$yellow = $sth->fetchAll();
?>
     
    
   
    Örnek 2 - Soru imli SQL deyim şablonu
    
<?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([150, 'red']);
$red = $sth->fetchAll();
$sth->execute([175, 'yellow']);
$yellow = $sth->fetchAll();
?>
     
    
   
    Örnek 3 - Soru imi öncelemeli SQL deyim şablonu
    
<?php
/* Dikkat: Bu sadece PostgreSQL veritabanlarında geçerlidir */
$sth = $dbh->prepare('SELECT * FROM issues WHERE tag::jsonb ?? ?');
$sth->execute(['feature']);
$featureIssues = $sth->fetchAll();
$sth->execute(['performance']);
$performanceIssues = $sth->fetchAll();
?>