<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.pdo.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'pdo.prepare.php',
    1 => 'PDO::prepare',
    2 => '&Ccedil;alıştırılmak &uuml;zere bir deyimi hazırlar ve bir deyim nesnesi olarak d&ouml;nd&uuml;r&uuml;r',
  ),
  'up' => 
  array (
    0 => 'class.pdo.php',
    1 => 'PDO',
  ),
  'prev' => 
  array (
    0 => 'pdo.lastinsertid.php',
    1 => 'PDO::lastInsertId',
  ),
  'next' => 
  array (
    0 => 'pdo.query.php',
    1 => 'PDO::query',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'reference/pdo/pdo/prepare.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="pdo.prepare" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">PDO::prepare</h1>
  <p class="verinfo">(PHP 5 &gt;= 5.1.0, PHP 7, PHP 8, PHP 8,PECL pdo &gt;= 0.1.0)</p><p class="refpurpose"><span class="refname">PDO::prepare</span> &mdash; <span class="dc-title">Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür</span></p>

 </div>
 <div class="refsect1 description" id="refsect1-pdo.prepare-description">
  <h3 class="title">Açıklama</h3>
<div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="methodname"><strong>PDO::prepare</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$deyim</code></span>, <span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter">$seçenekler</code><span class="initializer"> = []</span></span>): <span class="type"><span class="type"><a href="class.pdostatement.php" class="type PDOStatement">PDOStatement</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>


  <p class="para rdfs-comment">
   <span class="methodname"><a href="pdostatement.execute.php" class="methodname">PDOStatement::execute()</a></span> yöntemi ile çalıştırılmak üzere
   bir SQL deyimi hazırlar. Deyim şablonu sıfır veya daha fazla sayıda birer
   isimle (:isim) veya birer soru imi (?) ile ifade edilen bağımsız değişken
   içerebilir. Deyimin çalıştırılması sırasında bu bağımsız değişkenlere farklı
   değerler atanarak aynı deyim defalarca kullanılabilir. Aynı deyim şablonunda
   hem isimli hem de soru imli bağımsız değişkenleri kullanamazsınız. İkisinden
   birini seçmek zorundasınız. Herhangi bir kullanıcı girişini bağlamak için
   bu bağımsız değişkenleri kullanın, kullanıcı girişini doğrudan sorguya dahil
   etmeyin.
  </p>
  <p class="para">
   <span class="methodname"><a href="pdostatement.execute.php" class="methodname">PDOStatement::execute()</a></span> 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.
  </p>
  <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
   <p class="para">
    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.
   </p>
  </p></blockquote>
  <p class="para">
   Bir SQL deyiminin farklı değerlerle defalarca çalıştırılmak üzere
   <span class="methodname"><strong>PDO::prepare()</strong></span> ve
   <span class="methodname"><a href="pdostatement.execute.php" class="methodname">PDOStatement::execute()</a></span> 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, <span class="methodname"><strong>PDO::prepare()</strong></span> ve
   <span class="methodname"><a href="pdostatement.execute.php" class="methodname">PDOStatement::execute()</a></span> 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.
  </p>
  <p class="para">
   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.
  </p>
  <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
   <span class="simpara">
    Ö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.
   </span>
  </p></blockquote>
  <p class="para">
   PHP 7.4.0 ve sonrasında, soru imleri kendileri ile öncelenebiliyor. Yani,
   <code class="literal">??</code> dizgesi artık veritabanına <code class="literal">?</code>
   dizgesi olartak gönderiliyor.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-pdo.prepare-parameters">
  <h3 class="title">Bağımsız Değişkenler</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">deyim</code></dt>
     <dd>
      <p class="para">
       Hedef veritabanı sunucusu için geçerli bir SQL deyimi şablonu olmalıdır.
      </p>
     </dd>
    
    
     <dt><code class="parameter">seçenekler</code></dt>
     <dd>
      <p class="para">
       Bu yöntemden döndürülen <span class="classname"><a href="class.pdostatement.php" class="classname">PDOStatement</a></span> nesnesi
       için atanacak öznitelik değerlerini isim=&gt;değer çiftleri halinde
       içeren bir dizi. Çoğunlukla kaydırılabilen bir gösterici isteği için
       <code class="literal">PDO::CURSOR_SCROLL</code> özniteliğine
       <code class="literal">PDO::ATTR_CURSOR</code> 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.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-pdo.prepare-returnvalues">
  <h3 class="title">Dönen Değerler</h3>
  <p class="para">
   Veritabanı sunucusu deyimi başarıyla hazırlayabilmişse
   <span class="methodname"><strong>PDO::prepare()</strong></span> bir
   <span class="classname"><a href="class.pdostatement.php" class="classname">PDOStatement</a></span> nesnesi döndürür; aksi takdirde ya bir
   <span class="classname"><a href="class.pdoexception.php" class="classname">PDOException</a></span> yavrulanır veya işlev <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> döndürür
   (<a href="pdo.error-handling.php" class="link">hata işleme</a>ye bağımlı olarak).
  </p>
  <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
   <p class="para">
    Öykünülmüş hazır deyimler için veritabanı sunucusuyla müzakere
    yapılmadığından <span class="methodname"><strong>PDO::prepare()</strong></span> deyim üzerinde bir
    sınama yapmaz.
   </p>
  </p></blockquote>
 </div>


 <div class="refsect1 errors" id="refsect1-pdo.prepare-errors">
  <h3 class="title">Hatalar/İstisnalar</h3>
  <p class="para">
<strong><code><a href="pdo.constants.php#pdo.constants.attr-errmode">PDO::ATTR_ERRMODE</a></code></strong> özniteliğine
<strong><code><a href="pdo.constants.php#pdo.constants.errmode-warning">PDO::ERRMODE_WARNING</a></code></strong> atanırsa
<strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> düzeyinde bir hata çıktılanır.
</p>
<p class="para">
<strong><code><a href="pdo.constants.php#pdo.constants.attr-errmode">PDO::ATTR_ERRMODE</a></code></strong> özniteliğine
<strong><code><a href="pdo.constants.php#pdo.constants.errmode-exception">PDO::ERRMODE_EXCEPTION</a></code></strong> atanırsa
<span class="classname"><a href="class.pdoexception.php" class="classname">PDOException</a></span> istisnası oluşur.
</p>
 </div>


 <div class="refsect1 examples" id="refsect1-pdo.prepare-examples">
  <h3 class="title">Örnekler</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Örnek 1 - İsimli bağımsız değişkenli SQL deyim şablonu</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/* Değerleri bir dizi olarak aktaracağımız bir deyim hazırlayalım */<br /></span><span style="color: #0000BB">$sql </span><span style="color: #007700">= </span><span style="color: #DD0000">'SELECT name, colour, calories<br />    FROM fruit<br />    WHERE calories &lt; :calories AND colour = :colour'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$sth </span><span style="color: #007700">= </span><span style="color: #0000BB">$dbh</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prepare</span><span style="color: #007700">(</span><span style="color: #0000BB">$sql</span><span style="color: #007700">, [</span><span style="color: #0000BB">PDO</span><span style="color: #007700">::</span><span style="color: #0000BB">ATTR_CURSOR </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">PDO</span><span style="color: #007700">::</span><span style="color: #0000BB">CURSOR_FWDONLY</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">$sth</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">execute</span><span style="color: #007700">([</span><span style="color: #DD0000">'calories' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">150</span><span style="color: #007700">, </span><span style="color: #DD0000">'colour' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'red'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">$red </span><span style="color: #007700">= </span><span style="color: #0000BB">$sth</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetchAll</span><span style="color: #007700">();<br /></span><span style="color: #FF8000">/* Dizi anahtarları ":" ile de öncelenebiliyor (seçimlik) */<br /></span><span style="color: #0000BB">$sth</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">execute</span><span style="color: #007700">([</span><span style="color: #DD0000">':calories' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">175</span><span style="color: #007700">, </span><span style="color: #DD0000">':colour' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'yellow'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">$yellow </span><span style="color: #007700">= </span><span style="color: #0000BB">$sth</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetchAll</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
   <div class="example" id="example-2">
    <p><strong>Örnek 2 - Soru imli SQL deyim şablonu</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/* Değerleri bir dizi olarak aktaracağımız bir deyim hazırlayalım */<br /></span><span style="color: #0000BB">$sth </span><span style="color: #007700">= </span><span style="color: #0000BB">$dbh</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prepare</span><span style="color: #007700">(</span><span style="color: #DD0000">'SELECT name, colour, calories<br />    FROM fruit<br />    WHERE calories &lt; ? AND colour = ?'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$sth</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">execute</span><span style="color: #007700">([</span><span style="color: #0000BB">150</span><span style="color: #007700">, </span><span style="color: #DD0000">'red'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">$red </span><span style="color: #007700">= </span><span style="color: #0000BB">$sth</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetchAll</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$sth</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">execute</span><span style="color: #007700">([</span><span style="color: #0000BB">175</span><span style="color: #007700">, </span><span style="color: #DD0000">'yellow'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">$yellow </span><span style="color: #007700">= </span><span style="color: #0000BB">$sth</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetchAll</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
   <div class="example" id="example-3">
    <p><strong>Örnek 3 - Soru imi öncelemeli SQL deyim şablonu</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/* Dikkat: Bu sadece PostgreSQL veritabanlarında geçerlidir */<br /></span><span style="color: #0000BB">$sth </span><span style="color: #007700">= </span><span style="color: #0000BB">$dbh</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prepare</span><span style="color: #007700">(</span><span style="color: #DD0000">'SELECT * FROM issues WHERE tag::jsonb ?? ?'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$sth</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">execute</span><span style="color: #007700">([</span><span style="color: #DD0000">'feature'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">$featureIssues </span><span style="color: #007700">= </span><span style="color: #0000BB">$sth</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetchAll</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$sth</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">execute</span><span style="color: #007700">([</span><span style="color: #DD0000">'performance'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">$performanceIssues </span><span style="color: #007700">= </span><span style="color: #0000BB">$sth</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetchAll</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-pdo.prepare-seealso">
  <h3 class="title">Ayrıca Bakınız</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="methodname"><a href="pdo.exec.php" class="methodname" rel="rdfs-seeAlso">PDO::exec()</a> - Belirtilen SQL deyimini &ccedil;alıştırır ve etkilenen satır sayısını
  d&ouml;nd&uuml;r&uuml;r</span></li>
    <li><span class="methodname"><a href="pdo.query.php" class="methodname" rel="rdfs-seeAlso">PDO::query()</a> - Bir SQL deyimini yer tutucular olmaksızın hazırlar ve &ccedil;alıştırır</span></li>
    <li><span class="methodname"><a href="pdostatement.execute.php" class="methodname" rel="rdfs-seeAlso">PDOStatement::execute()</a> - Bir hazır deyimi &ccedil;alıştırır</span></li>
   </ul>
  </p>
 </div>

</div><?php manual_footer($setup); ?>