<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/mysql.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'mysqlinfo.api.choosing.php',
    1 => 'Auswahl einer API',
    2 => 'Auswahl einer API',
  ),
  'up' => 
  array (
    0 => 'mysql.php',
    1 => '&Uuml;bersicht &uuml;ber die PHP-Treiber f&uuml;r MySQL',
  ),
  'prev' => 
  array (
    0 => 'mysqlinfo.terminology.php',
    1 => '&Uuml;bersicht &uuml;ber die Terminologie',
  ),
  'next' => 
  array (
    0 => 'mysqlinfo.library.choosing.php',
    1 => 'Auswahl einer Bibliothek',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/mysqlinfo/set.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysqlinfo.api.choosing" class="chapter">
   <h1 class="title">Auswahl einer API</h1>

   <p class="simpara">
    PHP bietet verschiedene APIs für die Verbindung zu MySQL. Im Folgenden
    werden die APIs beschrieben, die von den Erweiterungen mysqli und PDO
    bereitgestellt werden. In jedem Codeschnipsel wird eine Verbindung zu
    einem MySQL-Server auf &quot;example.com&quot; mit dem Benutzernamen &quot;user&quot; und dem
    Passwort &quot;password&quot; hergestellt und es wird eine Abfrage zur Begrüßung des
    Benutzers ausgeführt.
   </p>
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 Vergleich der MySQL-APIs</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">// mysqli<br /></span><span style="color: #0000BB">$mysqli </span><span style="color: #007700">= new </span><span style="color: #0000BB">mysqli</span><span style="color: #007700">(</span><span style="color: #DD0000">"example.com"</span><span style="color: #007700">, </span><span style="color: #DD0000">"user"</span><span style="color: #007700">, </span><span style="color: #DD0000">"password"</span><span style="color: #007700">, </span><span style="color: #DD0000">"database"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$row </span><span style="color: #007700">= </span><span style="color: #0000BB">$result</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetch_assoc</span><span style="color: #007700">();<br />echo </span><span style="color: #0000BB">htmlentities</span><span style="color: #007700">(</span><span style="color: #0000BB">$row</span><span style="color: #007700">[</span><span style="color: #DD0000">'_message'</span><span style="color: #007700">]);<br /><br /></span><span style="color: #FF8000">// PDO<br /></span><span style="color: #0000BB">$pdo </span><span style="color: #007700">= new </span><span style="color: #0000BB">PDO</span><span style="color: #007700">(</span><span style="color: #DD0000">'mysql:host=example.com;dbname=database'</span><span style="color: #007700">, </span><span style="color: #DD0000">'user'</span><span style="color: #007700">, </span><span style="color: #DD0000">'password'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$statement </span><span style="color: #007700">= </span><span style="color: #0000BB">$pdo</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$row </span><span style="color: #007700">= </span><span style="color: #0000BB">$statement</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetch</span><span style="color: #007700">(</span><span style="color: #0000BB">PDO</span><span style="color: #007700">::</span><span style="color: #0000BB">FETCH_ASSOC</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">htmlentities</span><span style="color: #007700">(</span><span style="color: #0000BB">$row</span><span style="color: #007700">[</span><span style="color: #DD0000">'_message'</span><span style="color: #007700">]);</span></span></code></div>
    </div>

   </div>
   <div class="example" id="example-2">
    <p><strong>Beispiel #2 Vergleich mit vorbereiteten Anweisungen</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">// mysqli<br /></span><span style="color: #0000BB">$mysqli </span><span style="color: #007700">= new </span><span style="color: #0000BB">mysqli</span><span style="color: #007700">(</span><span style="color: #DD0000">"example.com"</span><span style="color: #007700">, </span><span style="color: #DD0000">"user"</span><span style="color: #007700">, </span><span style="color: #DD0000">"password"</span><span style="color: #007700">, </span><span style="color: #DD0000">"database"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$statement </span><span style="color: #007700">= </span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prepare</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT District FROM City WHERE Name=?"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$statement</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">execute</span><span style="color: #007700">([</span><span style="color: #DD0000">"Amersfoort"</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">$statement</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_result</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$row </span><span style="color: #007700">= </span><span style="color: #0000BB">$result</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetch_assoc</span><span style="color: #007700">();<br />echo </span><span style="color: #0000BB">htmlentities</span><span style="color: #007700">(</span><span style="color: #0000BB">$row</span><span style="color: #007700">[</span><span style="color: #DD0000">'District'</span><span style="color: #007700">]);<br /><br /></span><span style="color: #FF8000">// PDO<br /></span><span style="color: #0000BB">$pdo </span><span style="color: #007700">= new </span><span style="color: #0000BB">PDO</span><span style="color: #007700">(</span><span style="color: #DD0000">'mysql:host=example.com;dbname=database'</span><span style="color: #007700">, </span><span style="color: #DD0000">'user'</span><span style="color: #007700">, </span><span style="color: #DD0000">'password'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$statement </span><span style="color: #007700">= </span><span style="color: #0000BB">$pdo</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prepare</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT District FROM City WHERE Name=?"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$statement</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">execute</span><span style="color: #007700">([</span><span style="color: #DD0000">"Amersfoort"</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">$row </span><span style="color: #007700">= </span><span style="color: #0000BB">$statement</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetch</span><span style="color: #007700">(</span><span style="color: #0000BB">PDO</span><span style="color: #007700">::</span><span style="color: #0000BB">FETCH_ASSOC</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">htmlentities</span><span style="color: #007700">(</span><span style="color: #0000BB">$row</span><span style="color: #007700">[</span><span style="color: #DD0000">'District'</span><span style="color: #007700">]);</span></span></code></div>
    </div>

   </div>
   <p class="simpara">
    <strong>Vergleich der Merkmale</strong>
   </p>
   <p class="simpara">
    Die Leistung der beiden Erweiterungen ist insgesamt gesehen in etwa
    gleich. Allerdings macht die Leistung der Erweiterungen nur einen
    Bruchteil der Gesamtlaufzeit einer PHP-Webanforderung aus. Oft liegt der
    Einfluss bei nur 0,1%.
   </p>
   <table id="mysqlinfo.api.choosing.changelog" class="doctable informaltable">
    
     <thead>
      <tr>
       <th class="empty">&nbsp;</th>
       <th>ext/mysqli</th>
       <th>PDO_MySQL</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>PHP-Version der Einführung</td>
       <td>5.0</td>
       <td>5.1</td>
      </tr>

      <tr>
       <td>Enthalten in PHP 7.x und 8.x</td>
       <td>Ja</td>
       <td>Ja</td>
      </tr>

      <tr>
       <td>Entwicklungsstatus</td>
       <td>Aktiv</td>
       <td>Aktiv</td>
      </tr>

      <tr>
       <td>Lebenszyklus</td>
       <td>Aktiv</td>
       <td>Aktiv</td>
      </tr>

      <tr>
       <td>Für neue Projekte empfohlen</td>
       <td>Ja</td>
       <td>Ja</td>
      </tr>

      <tr>
       <td>OOP-Schnittstelle</td>
       <td>Ja</td>
       <td>Ja</td>
      </tr>

      <tr>
       <td>Prozedurale Schnittstelle</td>
       <td>Ja</td>
       <td>Nein</td>
      </tr>

      <tr>
       <td>API unterstützt nicht-blockierende, asynchrone Abfragen mit mysqlnd</td>
       <td>Ja</td>
       <td>Nein</td>
      </tr>

      <tr>
       <td>Persistente (dauerhafte) Verbindungen</td>
       <td>Ja</td>
       <td>Ja</td>
      </tr>

      <tr>
       <td>API unterstützt Zeichensätze</td>
       <td>Ja</td>
       <td>Ja</td>
      </tr>

      <tr>
       <td>API unterstützt serverseitige vorbereitete Anweisungen</td>
       <td>Ja</td>
       <td>Ja</td>
      </tr>

      <tr>
       <td>API unterstützt clientseitige vorbereitete Anweisungen</td>
       <td>Nein</td>
       <td>Ja</td>
      </tr>

      <tr>
       <td>API unterstützt gespeicherte Prozeduren</td>
       <td>Ja</td>
       <td>Ja</td>
      </tr>

      <tr>
       <td>API unterstützt Mehrfachanweisungen</td>
       <td>Ja</td>
       <td>Weitestgehend</td>
      </tr>

      <tr>
       <td>API unterstützt Transaktionen</td>
       <td>Ja</td>
       <td>Ja</td>
      </tr>

      <tr>
       <td>Transaktionen können mit SQL gesteuert werden</td>
       <td>Ja</td>
       <td>Ja</td>
      </tr>

      <tr>
       <td>Unterstützt die gesamte Funktionalität von MySQL 5.1+</td>
       <td>Ja</td>
       <td>Weitestgehend</td>
      </tr>

     </tbody>
    
   </table>

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