<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.sqlsrv.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.sqlsrv-prepare.php',
    1 => 'sqlsrv_prepare',
    2 => 'Prepara una consulta para su ejecuci&oacute;n',
  ),
  'up' => 
  array (
    0 => 'ref.sqlsrv.php',
    1 => 'SQLSRV Funciones',
  ),
  'prev' => 
  array (
    0 => 'function.sqlsrv-num-rows.php',
    1 => 'sqlsrv_num_rows',
  ),
  'next' => 
  array (
    0 => 'function.sqlsrv-query.php',
    1 => 'sqlsrv_query',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/sqlsrv/functions/sqlsrv-prepare.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.sqlsrv-prepare" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">sqlsrv_prepare</h1>
  <p class="verinfo">(No version information available, might only be in Git)</p><p class="refpurpose"><span class="refname">sqlsrv_prepare</span> &mdash; <span class="dc-title">Prepara una consulta para su ejecución</span></p>

 </div>
 <div class="refsect1 description" id="refsect1-function.sqlsrv-prepare-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>sqlsrv_prepare</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> <code class="parameter">$conn</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$sql</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter">$params</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<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><br>): <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span></div>

  <p class="simpara">
   Prepara una consulta para su ejecución. Esta función es ideal para
   preparar una consulta que será ejecutada varias veces con diferentes
   valores de argumentos.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.sqlsrv-prepare-parameters">
  <h3 class="title">Parámetros</h3>
  <dl>
   
    <dt><code class="parameter">conn</code></dt>
    <dd>
     <span class="simpara">
      Un recurso de conexión devuelto por la función
      <span class="function"><a href="function.sqlsrv-connect.php" class="function">sqlsrv_connect()</a></span>.
     </span>
    </dd>
   
   
    <dt><code class="parameter">sql</code></dt>
    <dd>
     <span class="simpara">
      La cadena que define la consulta a preparar y ejecutar.
     </span>
    </dd>
   
   
    <dt><code class="parameter">params</code></dt>
    <dd>
     <p class="para">
      Un array especificando la información de los argumentos al ejecutar
      una consulta que contiene argumentos. Los elementos del array pueden
      ser cualquiera de los siguientes:
      <ul class="simplelist">
       <li>Un valor literal</li>
       <li>Una variable PHP</li>
       <li>Un array con la siguiente estructura:
       array($value [, $direction [, $phpType [, $sqlType]]])</li>
      </ul>
      La tabla siguiente describe los elementos de la estructura del array anterior:
      </p>
      <table class="doctable table">
      <caption><strong>Estructura del array</strong></caption>
      
       <thead>
        <tr>
         <th>Elemento</th>
         <th>Descripción</th>
        </tr>

       </thead>

       <tbody class="tbody">
        <tr>
         <td>$value</td>
         <td>Un valor literal, una variable PHP o una variable PHP pasada por referencia.</td>
        </tr>

        <tr>
         <td>$direction (opcional)</td>
         <td>Una de las constantes SQLSRV siguientes, utilizadas para indicar la
          dirección del argumento: SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT.
          El valor por defecto es SQLSRV_PARAM_IN.
         </td>
        </tr>

        <tr>
         <td>$phpType (opcional)</td>
         <td>Una constante SQLSRV_PHPTYPE_* que especifica el tipo de datos PHP
          del valor devuelto.</td>
        </tr>

        <tr>
         <td>$sqlType (opcional)</td>
         <td>Una constante SQLSRV_SQLTYPE_* que especifica el tipo de datos
          del servidor SQL del valor de entrada.</td>
        </tr>

       </tbody>
      
     </table>

    </dd>
   
   
    <dt><code class="parameter">options</code></dt>
    <dd>
     <span class="simpara">
      Un array especificando las opciones de propiedades de la consulta.
      Las claves soportadas se describen en la tabla siguiente:
     </span>
     <table class="doctable table">
      <caption><strong>Opciones de la consulta</strong></caption>
      
       <thead>
        <tr>
         <th>Clave</th>
         <th>Valores</th>
         <th>Descripción</th>
        </tr>

       </thead>

       <tbody class="tbody">
        <tr>
         <td>QueryTimeout</td>
         <td>Un valor entero positivo.</td>
         <td>Define el tiempo máximo de ejecución de la consulta, en segundos.
          Por defecto, el controlador esperará indefinidamente los resultados.</td>
        </tr>

        <tr>
         <td>SendStreamParamsAtExec</td>
         <td><strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> (por defecto, <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>)</td>
         <td>Configura el controlador para enviar los datos del flujo a la ejecución (<strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>),
          o enviar los datos del flujo por partes (<strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>). Por defecto, el valor
          está definido a <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>. Para más información, consulte la función
          <span class="function"><a href="function.sqlsrv-send-stream-data.php" class="function">sqlsrv_send_stream_data()</a></span>.</td>
        </tr>

        <tr>
         <td>Scrollable</td>
         <td>SQLSRV_CURSOR_FORWARD, SQLSRV_CURSOR_STATIC, SQLSRV_CURSOR_DYNAMIC,
         o SQLSRV_CURSOR_KEYSET</td>
         <td>Ver la sección sobre <a href="http://msdn.microsoft.com/en-us/library/ee376927.aspx" class="link external">&raquo;&nbsp;la
          especificación de un tipo de cursor y la selección de filas</a> de la documentación
          Microsoft SQLSRV.</td>
        </tr>

       </tbody>
      
     </table>

    </dd>
   
  </dl>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.sqlsrv-prepare-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="simpara">
   Devuelve un recurso de consulta en caso de éxito, o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si ocurre un error.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.sqlsrv-prepare-examples">
  <h3 class="title">Ejemplos</h3>
  <div class="example" id="example-1">
   <p><strong>Ejemplo #1 Ejemplo con <span class="function"><strong>sqlsrv_prepare()</strong></span></strong></p>
   <div class="example-contents"><p>
    Este ejemplo muestra cómo preparar una consulta con la función
    <span class="function"><strong>sqlsrv_prepare()</strong></span> y su re-ejecución varias veces
    (con diferentes valores de argumentos) utilizando la función
    <span class="function"><a href="function.sqlsrv-execute.php" class="function">sqlsrv_execute()</a></span>.
   </p></div>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$serverName </span><span style="color: #007700">= </span><span style="color: #DD0000">"serverName\sqlexpress"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$connectionInfo </span><span style="color: #007700">= array( </span><span style="color: #DD0000">"Database"</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">"dbName"</span><span style="color: #007700">, </span><span style="color: #DD0000">"UID"</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">"username"</span><span style="color: #007700">, </span><span style="color: #DD0000">"PWD"</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">"password"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$conn </span><span style="color: #007700">= </span><span style="color: #0000BB">sqlsrv_connect</span><span style="color: #007700">( </span><span style="color: #0000BB">$serverName</span><span style="color: #007700">, </span><span style="color: #0000BB">$connectionInfo</span><span style="color: #007700">);<br />if( </span><span style="color: #0000BB">$conn </span><span style="color: #007700">=== </span><span style="color: #0000BB">false</span><span style="color: #007700">) {<br />    die( </span><span style="color: #0000BB">print_r</span><span style="color: #007700">( </span><span style="color: #0000BB">sqlsrv_errors</span><span style="color: #007700">(), </span><span style="color: #0000BB">true</span><span style="color: #007700">));<br />}<br /><br /></span><span style="color: #0000BB">$sql </span><span style="color: #007700">= </span><span style="color: #DD0000">"UPDATE Table_1<br />        SET OrderQty = ?<br />        WHERE SalesOrderID = ?"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Inicializa los argumentos y prepara la consulta.<br />// Las variables $qty y $id están ligadas a la consulta $stmt.<br /></span><span style="color: #0000BB">$qty </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">$id </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$stmt </span><span style="color: #007700">= </span><span style="color: #0000BB">sqlsrv_prepare</span><span style="color: #007700">( </span><span style="color: #0000BB">$conn</span><span style="color: #007700">, </span><span style="color: #0000BB">$sql</span><span style="color: #007700">, array( &amp;</span><span style="color: #0000BB">$qty</span><span style="color: #007700">, &amp;</span><span style="color: #0000BB">$id</span><span style="color: #007700">));<br />if( !</span><span style="color: #0000BB">$stmt </span><span style="color: #007700">) {<br />    die( </span><span style="color: #0000BB">print_r</span><span style="color: #007700">( </span><span style="color: #0000BB">sqlsrv_errors</span><span style="color: #007700">(), </span><span style="color: #0000BB">true</span><span style="color: #007700">));<br />}<br /><br /></span><span style="color: #FF8000">// Define la información SalesOrderDetailID y OrderQty.<br />// Este array liga el orden de los IDs con el orden de las cantidades con pares clave=&gt;valor.<br /></span><span style="color: #0000BB">$orders </span><span style="color: #007700">= array( </span><span style="color: #0000BB">1</span><span style="color: #007700">=&gt;</span><span style="color: #0000BB">10</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">=&gt;</span><span style="color: #0000BB">20</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">=&gt;</span><span style="color: #0000BB">30</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Ejecuta la consulta para cada orden.<br /></span><span style="color: #007700">foreach( </span><span style="color: #0000BB">$orders </span><span style="color: #007700">as </span><span style="color: #0000BB">$id </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$qty</span><span style="color: #007700">) {<br />    </span><span style="color: #FF8000">// Debido a que $id y $qty están ligados a $stmt1,<br />    // sus valores actualizados se utilizan en cada ejecución<br />    // de la consulta.<br />    </span><span style="color: #007700">if( </span><span style="color: #0000BB">sqlsrv_execute</span><span style="color: #007700">( </span><span style="color: #0000BB">$stmt </span><span style="color: #007700">) === </span><span style="color: #0000BB">false </span><span style="color: #007700">) {<br />          die( </span><span style="color: #0000BB">print_r</span><span style="color: #007700">( </span><span style="color: #0000BB">sqlsrv_errors</span><span style="color: #007700">(), </span><span style="color: #0000BB">true</span><span style="color: #007700">));<br />    }<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </div>


 <div class="refsect1 notes" id="refsect1-function.sqlsrv-prepare-notes">
  <h3 class="title">Notas</h3>
  <p class="simpara">
   Cuando se prepara una consulta que utiliza variables como argumentos,
   las variables están ligadas a la consulta. Esto significa que si se actualizan
   los valores de estas variables, la próxima ejecución de la consulta tomará
   en cuenta estos nuevos valores. Para las consultas que se prevé ejecutar
   solo una vez, utilice la función
   <span class="function"><a href="function.sqlsrv-query.php" class="function">sqlsrv_query()</a></span>.
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.sqlsrv-prepare-seealso">
  <h3 class="title">Ver también</h3>
  <ul class="simplelist">
   <li><span class="function"><a href="function.sqlsrv-execute.php" class="function" rel="rdfs-seeAlso">sqlsrv_execute()</a> - Ejecuta una sentencia preparada con sqlsrv_prepare</span></li>
   <li><span class="function"><a href="function.sqlsrv-query.php" class="function" rel="rdfs-seeAlso">sqlsrv_query()</a> - Prepara y ejecuta una consulta</span></li>
  </ul>
 </div>

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