<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.ibm-db2.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'function.db2-prepare.php',
    1 => 'db2_prepare',
    2 => 'Pr&eacute;pare une requ&ecirc;te SQL &agrave; &ecirc;tre ex&eacute;cut&eacute;e',
  ),
  'up' => 
  array (
    0 => 'ref.ibm-db2.php',
    1 => 'Fonctions IBM DB2',
  ),
  'prev' => 
  array (
    0 => 'function.db2-pconnect.php',
    1 => 'db2_pconnect',
  ),
  'next' => 
  array (
    0 => 'function.db2-primary-keys.php',
    1 => 'db2_primary_keys',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/ibm_db2/functions/db2-prepare.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.db2-prepare" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">db2_prepare</h1>
  <p class="verinfo">(PECL ibm_db2 &gt;= 1.0.0)</p><p class="refpurpose"><span class="refname">db2_prepare</span> &mdash; <span class="dc-title">
   Prépare une requête SQL à être exécutée
  </span></p>

 </div>
 <div class="refsect1 description" id="refsect1-function.db2-prepare-description">
  <h3 class="title">Description</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>db2_prepare</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> <code class="parameter">$connection</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$statement</code></span>, <span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter">$options</code><span class="initializer"> = []</span></span>): <span class="type"><span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>


  <p class="simpara">
   <span class="function"><strong>db2_prepare()</strong></span> crée une requête SQL préparée qui peut
   inclure aucun ou plusieurs marqueurs (caractères <code class="literal">?</code>)
   représentant les paramètres d&#039;entrée, sortie ou d&#039;entrée/sortie. Il
   est possible de passer des paramètres à la requête préparée en utilisant la
   fonction <span class="function"><a href="function.db2-bind-param.php" class="function">db2_bind_param()</a></span>, s&#039;il n&#039;y a que des entrées,
   il est possible d&#039;utiliser <span class="function"><a href="function.db2-execute.php" class="function">db2_execute()</a></span>.
  </p>
  <p class="para">
   Il y a trois principaux avantages d&#039;utiliser les requêtes préparées dans
   l&#039;application :
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      <em>Performance</em> : lors de la préparation d&#039;une requête, le
      serveur de base de données crée un plan d&#039;accès optimisé pour la
      récupération des données avec la requête. Par la suite, l&#039;envoi de la
      requête préparée avec <span class="function"><a href="function.db2-execute.php" class="function">db2_execute()</a></span> permet à la
      requête de réutiliser le plan d&#039;accès et ainsi d&#039;éviter les surcharges
      du processeur à chaque envoi de requête qui créerait dynamiquement un
      nouveau plan d&#039;accès.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <em>Sécurité</em> : lors de la préparation d&#039;une requête, l&#039;on
      peut inclure des marqueurs pour les valeurs d&#039;entrées. Lors de
      l&#039;exécution d&#039;une requête préparée avec ces valeurs d&#039;entrées, le serveur de
      base de données vérifie chaque valeur d&#039;entrée pour s&#039;assurer que les
      types concordent avec la définition de la colonne ou du paramètre de
      définition.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <em>Fonctionnalité avancée</em> : Les marqueurs permettent
      non seulement de passer des valeurs d&#039;entrées dans les requêtes SQL
      préparées, mais permettent aussi de récupérer des paramètres de SORTIE et
      d&#039;ENTRÉE/SORTIE des procédures d&#039;enregistrement en utilisant la fonction
      <span class="function"><a href="function.db2-bind-param.php" class="function">db2_bind_param()</a></span>.
     </span>
    </li>
   </ul>
  </p>

 </div>

 <div class="refsect1 parameters" id="refsect1-function.db2-prepare-parameters">
  <h3 class="title">Liste de paramètres</h3>
  <dl>
   
    <dt><code class="parameter">connection</code></dt>
    <dd>
     <span class="simpara">
      Une variable ressource de connexion valide retournée par
      <span class="function"><a href="function.db2-connect.php" class="function">db2_connect()</a></span> ou <span class="function"><a href="function.db2-pconnect.php" class="function">db2_pconnect()</a></span>.
     </span>
    </dd>
   
   
    <dt><code class="parameter">statement</code></dt>
    <dd>
     <span class="simpara">
      Une requête SQL qui peut contenir un ou plusieurs marqueurs.
     </span>
    </dd>
   
   
    <dt><code class="parameter">options</code></dt>
    <dd>
     <span class="simpara">
      Un tableau associatif contenant les options de la requête. Il est possible de
      utiliser ce paramètre pour demander un curseur flottant sur les
      serveurs de base de données qui supportent cette fonctionnalité.
     </span>
     <span class="simpara">
      Pour une description des options valides, se reporter à la fonction
      <span class="function"><a href="function.db2-set-option.php" class="function">db2_set_option()</a></span>.
     </span>
    </dd>
   
  </dl>
 </div>

 <div class="refsect1 returnvalues" id="refsect1-function.db2-prepare-returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="simpara">
   Retourne une variable ressource si la requête SQL était envoyée
   correctement ou <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si le serveur de base de données a
   retourné une erreur. Il est possible de déterminer quelle erreur a été retournée
   en appelant la fonction
   <span class="function"><a href="function.db2-stmt-error.php" class="function">db2_stmt_error()</a></span> ou <span class="function"><a href="function.db2-stmt-errormsg.php" class="function">db2_stmt_errormsg()</a></span>.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.db2-prepare-examples">
  <h3 class="title">Exemples</h3>
  <div class="example" id="example-1">
   <p><strong>Exemple #1 Préparation et exécution d&#039;une requête SQL avec des marqueurs</strong></p>
   <div class="example-contents"><p>
    L&#039;exemple suivant prépare une requête INSERT qui accepte quatre
    marqueurs, ensuite itère sur le tableau contenant les valeurs d&#039;entrées
    qui sera passé à la fonction <span class="function"><a href="function.db2-execute.php" class="function">db2_execute()</a></span>.
   </p></div>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$animaux </span><span style="color: #007700">= array(<br />    array(</span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #DD0000">'chat'</span><span style="color: #007700">, </span><span style="color: #DD0000">'Pook'</span><span style="color: #007700">, </span><span style="color: #0000BB">3.2</span><span style="color: #007700">),<br />    array(</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #DD0000">'chien'</span><span style="color: #007700">, </span><span style="color: #DD0000">'Peaches'</span><span style="color: #007700">, </span><span style="color: #0000BB">12.3</span><span style="color: #007700">),<br />    array(</span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #DD0000">'cheval'</span><span style="color: #007700">, </span><span style="color: #DD0000">'Smarty'</span><span style="color: #007700">, </span><span style="color: #0000BB">350.0</span><span style="color: #007700">),<br />);<br /><br /></span><span style="color: #0000BB">$insert </span><span style="color: #007700">= </span><span style="color: #DD0000">'INSERT INTO animaux (id, race, nom, poids)<br />    VALUES (?, ?, ?, ?)'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$stmt </span><span style="color: #007700">= </span><span style="color: #0000BB">db2_prepare</span><span style="color: #007700">(</span><span style="color: #0000BB">$conn</span><span style="color: #007700">, </span><span style="color: #0000BB">$insert</span><span style="color: #007700">);<br />if (</span><span style="color: #0000BB">$stmt</span><span style="color: #007700">) {<br />    foreach (</span><span style="color: #0000BB">$animaux </span><span style="color: #007700">as </span><span style="color: #0000BB">$animal</span><span style="color: #007700">) {<br />        </span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">db2_execute</span><span style="color: #007700">(</span><span style="color: #0000BB">$stmt</span><span style="color: #007700">, </span><span style="color: #0000BB">$animal</span><span style="color: #007700">);<br />    }<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.db2-prepare-seealso">
  <h3 class="title">Voir aussi</h3>
  <ul class="simplelist">
   <li><span class="function"><a href="function.db2-bind-param.php" class="function" rel="rdfs-seeAlso">db2_bind_param()</a> - Associe une variable PHP &agrave; un param&egrave;tre d'une requ&ecirc;te SQL</span></li>
   <li><span class="function"><a href="function.db2-execute.php" class="function" rel="rdfs-seeAlso">db2_execute()</a> - Ex&eacute;cute une requ&ecirc;te SQL pr&eacute;par&eacute;e</span></li>
   <li><span class="function"><a href="function.db2-stmt-error.php" class="function" rel="rdfs-seeAlso">db2_stmt_error()</a> - Retourne une cha&icirc;ne contenant la valeur de SQLSTATE retourn&eacute;e par une requ&ecirc;te SQL</span></li>
   <li><span class="function"><a href="function.db2-stmt-errormsg.php" class="function" rel="rdfs-seeAlso">db2_stmt_errormsg()</a> - Retourne le dernier message d'erreur d'une requ&ecirc;te SQL</span></li>
  </ul>
 </div>

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