<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.pgsql.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'function.pg-prepare.php',
    1 => 'pg_prepare',
    2 => 'Sendet eine Aufforderung an den Server, eine vorbereitete Anfrage mit den
   &uuml;bergebenen Parametern zu erzeugen und wartet auf ihre Beendigung',
  ),
  'up' => 
  array (
    0 => 'ref.pgsql.php',
    1 => 'PostgreSQL-Funktionen',
  ),
  'prev' => 
  array (
    0 => 'function.pg-port.php',
    1 => 'pg_port',
  ),
  'next' => 
  array (
    0 => 'function.pg-put-line.php',
    1 => 'pg_put_line',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/pgsql/functions/pg-prepare.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.pg-prepare" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">pg_prepare</h1>
  <p class="verinfo">(PHP 5 &gt;= 5.1.0, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">pg_prepare</span> &mdash; <span class="dc-title">
   Sendet eine Aufforderung an den Server, eine vorbereitete Anfrage mit den
   übergebenen Parametern zu erzeugen und wartet auf ihre Beendigung
  </span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.pg-prepare-description">
  <h3 class="title">Beschreibung</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>pg_prepare</strong></span>(<span class="methodparam"><span class="type"><a href="class.pgsql-connection.php" class="type PgSql\Connection">PgSql\Connection</a></span> <code class="parameter">$connection</code><span class="initializer"> = ?</span></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$stmtname</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$query</code></span>): <span class="type"><span class="type"><a href="class.pgsql-result.php" class="type PgSql\Result">PgSql\Result</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="function"><strong>pg_prepare()</strong></span> erzeugt eine vorbereitete Abfrage, die
   später mit <span class="function"><a href="function.pg-execute.php" class="function">pg_execute()</a></span> oder
   <span class="function"><a href="function.pg-send-execute.php" class="function">pg_send_execute()</a></span> ausgeführt werden kann. Dank dieser
   Eigenschaft brauchen wiederholt ausgeführte Abfragen nur ein einziges Mal
   geparst und geplant werden, anstatt bei jeder Ausführung.
  </p>
  <p class="para">
   Diese Funktion erzeugt aus der Abfrage <code class="parameter">query</code> eine
   vorbereitete Abfrage mit dem Namen <code class="parameter">stmtname</code>.
   <code class="parameter">query</code> darf nur ein einzelnes SQL-Kommando enthalten.
   <code class="parameter">stmtname</code> kann <code class="literal">&quot;&quot;</code> sein, um eine
   unbenannte Abfrage zu erzeugen, wobei zuvor definierte unbenannte Abfragen
   automatisch überschrieben werden. Falls der Name der vorbereiteten Abfrage
   in der aktuellen Datenbanksitzung schon vergeben ist, wird ein Fehler
   zurückgegeben. Falls irgendwelche Parameter übergeben wurden, werden diese
   in <code class="parameter">query</code> als <code class="literal">$1</code>,
   <code class="literal">$2</code> usw. referenziert.
  </p>
  <p class="para">
   Vorbereitete Abfragen, die mit <span class="function"><strong>pg_prepare()</strong></span> erzeugt
   wurden, können ebenso mit dem SQL-Kommando <code class="literal">PREPARE</code>
   erzeugt werden (allerdings ist <span class="function"><strong>pg_prepare()</strong></span> flexibler,
   weil Parametertypen nicht vorab deklariert werden müssen). Obwohl es keine
   PHP-Funktion zum Löschen vorbereiteter Anfragen gibt, können diese mit dem
   SQL-Kommando <code class="literal">DEALLOCATE</code> gelöscht werden.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.pg-prepare-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">connection</code></dt>
     <dd>
      <p class="para">Eine <span class="classname"><a href="class.pgsql-connection.php" class="classname">PgSql\Connection</a></span>-Instanz.
Falls <code class="parameter">connection</code> nicht angegeben wurde, wird die Standardverbindung benutzt.
Das ist die zuletzt mit <span class="function"><a href="function.pg-connect.php" class="function">pg_connect()</a></span> oder <span class="function"><a href="function.pg-pconnect.php" class="function">pg_pconnect()</a></span> aufgebaute Verbindung.
<div class="warning"><strong class="warning">Warnung</strong><p class="simpara">Seit PHP 8.1.0 ist die Verwendung der Standardverbindung veraltet.</p></div></p>
     </dd>
    
    
     <dt><code class="parameter">stmtname</code></dt>
     <dd>
      <p class="para">
       Der Name, unter dem die vorbereitete Abfrage gespeichert wird. Dieser
       muss für jede Verbindung eindeutig sein. Falls <code class="literal">&quot;&quot;</code>
       angegeben wurde, wird eine unbenannte Abfrage erzeugt, die alle zuvor
       definierten unbenannten Abfragen überschreibt.
      </p>
     </dd>
    
    
     <dt><code class="parameter">query</code></dt>
     <dd>
      <p class="para">
       Die parametrisierte vorbereitete Abfrage. Diese darf nur ein einziges
       SQL-Kommando enthalten (mehrere Kommandos, durch Semikolon getrennt,
       sind nicht zulässig). Falls Parameter übergeben werden, werden sie als
       <code class="literal">$1</code>, <code class="literal">$2</code>, ... referenziert.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.pg-prepare-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   Bei Erfolg wird eine <span class="classname"><a href="class.pgsql-result.php" class="classname">PgSql\Result</a></span>-Instanz zurückgegeben.
   Bei einem Fehler wird <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> zurückgegeben.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.pg-prepare-changelog">
  <h3 class="title">Changelog</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Beschreibung</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
 <td>8.1.0</td>
 <td>
  Gibt nun eine <span class="classname"><a href="class.pgsql-result.php" class="classname">PgSql\Result</a></span>-Instanz zurück;
  vorher wurde eine <a href="language.types.resource.php" class="link">Ressource</a> zurückgegeben.
 </td>
</tr>

     <tr>
 <td>8.1.0</td>
 <td>
  Der Parameter <code class="parameter">connection</code> erwartet nun eine <span class="classname"><a href="class.pgsql-connection.php" class="classname">PgSql\Connection</a></span>-Instanz;
  vorher wurde eine <a href="language.types.resource.php" class="link">Ressource</a> erwartet.
 </td>
</tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-function.pg-prepare-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 <span class="function"><strong>pg_prepare()</strong></span>-Beispiel</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">// Verbindung zu einer Datenbank namens "mary" aufbauen<br /></span><span style="color: #0000BB">$dbconn </span><span style="color: #007700">= </span><span style="color: #0000BB">pg_connect</span><span style="color: #007700">(</span><span style="color: #DD0000">"dbname=mary"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Abfrage vorbereiten<br /></span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">pg_prepare</span><span style="color: #007700">(</span><span style="color: #0000BB">$dbconn</span><span style="color: #007700">, </span><span style="color: #DD0000">"my_query"</span><span style="color: #007700">, </span><span style="color: #DD0000">'SELECT * FROM shops WHERE name = $1'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Die vorbereitete Abfrage ausführen. Es ist zu beachten, dass es<br />// nicht nötig ist, den String "Joe's Widgets" zu maskieren.<br /></span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">pg_execute</span><span style="color: #007700">(</span><span style="color: #0000BB">$dbconn</span><span style="color: #007700">, </span><span style="color: #DD0000">"my_query"</span><span style="color: #007700">, array(</span><span style="color: #DD0000">"Joe's Widgets"</span><span style="color: #007700">));<br /><br /></span><span style="color: #FF8000">// Dieselbe Abfrage mit einem anderen Parameter nochmal ausführen<br /></span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">pg_execute</span><span style="color: #007700">(</span><span style="color: #0000BB">$dbconn</span><span style="color: #007700">, </span><span style="color: #DD0000">"my_query"</span><span style="color: #007700">, array(</span><span style="color: #DD0000">"Clothes Clothes Clothes"</span><span style="color: #007700">));<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

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


 <div class="refsect1 seealso" id="refsect1-function.pg-prepare-seealso">
  <h3 class="title">Siehe auch</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.pg-execute.php" class="function" rel="rdfs-seeAlso">pg_execute()</a> - Fordert den Datenankserver auf, eine vorbereitete Anfrage mit den
   angegebenen Parametern auszuf&uuml;hren und wartet auf das Ergebnis</span></li>
    <li><span class="function"><a href="function.pg-send-execute.php" class="function" rel="rdfs-seeAlso">pg_send_execute()</a> - Sendet eine Aufforderung an den Server, eine vorbereitete Abfrage mit den
   &uuml;bergebenen Parametern auszuf&uuml;hren, ohne auf die Ergebnisse zu warten</span></li>
   </ul>
  </p>
 </div>


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