<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/pdo.drivers.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'ref.pdo-mysql.php',
    1 => 'MySQL PDO-Treiber',
    2 => 'MySQL PDO-Treiber (PDO_MYSQL)',
  ),
  'up' => 
  array (
    0 => 'pdo.drivers.php',
    1 => 'PDO-Treiber',
  ),
  'prev' => 
  array (
    0 => 'ref.pdo-informix.connection.php',
    1 => 'PDO_INFORMIX DSN',
  ),
  'next' => 
  array (
    0 => 'ref.pdo-mysql.connection.php',
    1 => 'PDO_MYSQL DSN',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/pdo_mysql/reference.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/ref.pdo-mysql.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="ref.pdo-mysql" class="reference">
  
  <h1 class="title">MySQL PDO-Treiber (PDO_MYSQL)</h1>
  
  <div class="partintro">

   <div class="section" id="ref.pdo-mysql.intro">
   <h2 class="title">Einführung</h2>
    <p class="para">
     PDO_MYSQL ist ein Treiber, der die
     <a href="book.pdo.php#intro.pdo" class="link">PHP Data Objects (PDO)-Schnittstelle</a>
     implementiert, um von PHP aus auf MySQL Datenbanken zugreifen zu können.
    </p>
    <p class="para">
     PDO_MYSQL verwendet standardmäßig emulierte vorbereitete Anweisungen.
    </p>

    <p class="para">
      <strong>MySQL 8</strong>
    </p>

    <p class="para">
     Bei PHP-Versionen vor PHP 7.1.16 oder der 7.2-Serie vor 7.2.4 muss das
     Standard-Passwort-Plugin des MySQL 8-Servers auf
     <em>mysql_native_password</em> gesetzt werden, da sonst
     Fehler angezeigt werden wie <em>The server requested authentication
     method unknown to the client [caching_sha2_password]</em>, auch
     wenn <em>caching_sha2_password</em> nicht verwendet wird.
    </p>
    <p class="para">
     Das liegt daran, dass MySQL 8 standardmäßig caching_sha2_password
     verwendet und dieses Plugin von den älteren PHP- (mysqlnd) Versionen
     nicht erkannt wird. Stattdessen muss die Voreinstellung durch den
     Eintrag
     <code class="literal">default_authentication_plugin=mysql_native_password</code> in
     der Datei <var class="filename">my.cnf</var> geändert werden. Das Plugin
     <em>caching_sha2_password</em> wird seit PHP 7.4.4
     vollständig unterstützt. In älteren Versionen wird es von der Erweiterung
     <a href="book.mysql-xdevapi.php" class="link">mysql_xdevapi</a> unterstützt.
    </p>
    <div class="warning"><strong class="warning">Warnung</strong>
     <p class="para">
      Vorsicht ist geboten: Einige MySQL-Tabellentypen (Speicher-Engines)
      unterstützen keine Transaktionen. Wenn transaktionaler Datenbankcode für
      einen Tabellentyp geschrieben wird, der keine Transaktionen unterstützt,
      verhält sich MySQL so, als sei eine Transaktion erfolgreich initiiert
      worden. Darüber hinaus werden alle ausgelösten DDL-Abfragen implizit
      alle anstehenden Transaktionen festschreiben.
     </p>
    </div>
    <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
     <p class="para">
      Der MySQL-Treiber unterstützt die Konstante
      <strong><code><a href="pdo.constants.php#pdo.constants.param-input-output">PDO::PARAM_INPUT_OUTPUT</a></code></strong> über die Methode
      <span class="methodname"><a href="pdostatement.bindparam.php" class="methodname">PDOStatement::bindParam()</a></span> nicht korrekt; solche
      Parameter können zwar verwendet werden, werden aber nicht aktualisiert
      (d. h. die eigentliche Ausgabe wird ignoriert).
     </p>
    </p></blockquote>
   </div>
   


<div class="section" id="ref.pdo-mysql.installation">
 <h2 class="title">Installation</h2>
 <p class="para">
  In allen gängigen Unix-Distributionen sind Binärversionen von PHP enthalten,
  die installiert werden können. Obwohl diese Binärversionen in der Regel mit
  Unterstützung für die MySQL-Erweiterungen gebaut werden, müssen die
  Erweiterungsbibliotheken selbst möglicherweise über ein zusätzliches Paket
  installiert werden. Ob dies der Fall ist, erfahren Sie in der Paketverwaltung
  Paketverwaltung der von Ihnen gewählten Distribution.
 </p>

 <p class="para">
  Unter Ubuntu zum Beispiel installiert das Paket <code class="literal">php5-mysql</code>
  die PHP-Erweiterungen ext/mysql, ext/mysqli und PDO_MYSQL. Auch unter CentOS
  installiert das Paket <code class="literal">php-mysql</code> diese drei
  PHP-Erweiterungen.
 </p>

 <p class="para">
  Alternativ können Sie diese Erweiterung auch selbst kompilieren. Wenn Sie
  PHP aus dem Quellcode kompilieren, können Sie die MySQL-Erweiterungen
  angeben, die Sie verwenden möchten, und auch die Client-Bibliothek für jede
  Erweiterung auswählen.
 </p>

 <p class="para">
  Um die Erweiterung PDO MySQL zu installieren, verwenden Sie beim Kompilieren
  <strong class="option configure">--with-pdo-mysql[=DIR]</strong>, wobei das
  optionale <code class="literal">[=DIR]</code> die MySQL-Basisbibliothek angibt. Die
  Standardbibliothek ist <a href="book.mysqlnd.php" class="link">Mysqlnd</a>. Für
  Details über die Auswahl einer Bibliothek, siehe
  <a href="mysqlinfo.library.choosing.php" class="link">Auswahl einer MySQL-Bibliothek</a>.
 </p>
 <p class="para">
  Mit dem optionalen <strong class="option configure">--with-mysql-sock[=DIR]</strong>
  kann der Speicherort des Unix-Sockets von MySQL für alle MySQL Erweiterungen,
  einschließlich PDO_MYSQL, festgelegt werden. Wenn nichts angegeben ist,
  werden die standardmäßigen Speicherorte durchsucht.
 </p>
 <p class="para">
  Optional kann <strong class="option configure">--with-zlib-dir[=DIR]</strong>
  verwendet werden, um den Pfad zum libz-Installationspräfix festzulegen.
 </p>
 <p class="para">
  <div class="example-contents screen">
<div class="cdata"><pre>
$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
</pre></div>
  </div>
 </p>
 <p class="para">
  Die <abbr title="Secure Sockets Layer">SSL</abbr>-Unterstützung wird mit den entsprechenden
  <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-key">Pdo\Mysql::ATTR_SSL_<span class="replaceable">*</span></a></code></strong>-Konstanten
  aktiviert, was dem Aufruf der
  <a href="https://dev.mysql.com/doc/c-api/8.4/en/mysql-ssl-set.html" class="link external">&raquo;&nbsp;MySQL C API-Funktion mysql_ssl_set()</a>
  entspricht. Darüber hinaus kann SSL nicht mittels
  <span class="methodname"><a href="pdo.setattribute.php" class="methodname">PDO::setAttribute()</a></span> aktiviert werden, da die Verbindung
  bereits existiert. Siehe auch die MySQL-Dokumentation über den
  <a href="https://dev.mysql.com/doc/en/using-encrypted-connections.html" class="link external">&raquo;&nbsp;Aufbau einer Verbindung zu MySQL mit SSL</a>.
 </p>

</div>



   


<div class="section" id="ref.pdo-mysql.constants">
 <h2 class="title">Vordefinierte Konstanten</h2>
 <p class="simpara">Die folgenden Konstanten werden von
diesem Treiber definiert und sind nur verfügbar, wenn die Erweiterung entweder
in PHP einkompiliert oder dynamisch zur Laufzeit geladen wurde. Darüber hinaus
sind diese Konstanten treiberspezifisch und sollten nur mit diesem Treiber
benutzt werden. Treiberspezifische Attribute mit einem anderen Treiber zu
nutzen, kann zu unerwarteten Ergebnissen führen. Wenn der Code mit
verschiedenen Treibern funktioniert, kann
<span class="function"><a href="pdo.getattribute.php" class="function">PDO::getAttribute()</a></span> verwendet werden, um mit
<strong><code><a href="pdo.constants.php#pdo.constants.attr-driver-name">PDO::ATTR_DRIVER_NAME</a></code></strong> den aktuellen Treiber zu
ermitteln.</p>
 <dl>
  
   <dt id="pdo.constants.mysql-attr-use-buffered-query">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-use-buffered-query">PDO::MYSQL_ATTR_USE_BUFFERED_QUERY</a></code></strong>
     (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-use-buffered-query">Pdo\Mysql::ATTR_USE_BUFFERED_QUERY</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-local-infile">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-local-infile">PDO::MYSQL_ATTR_LOCAL_INFILE</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-local-infile">Pdo\Mysql::ATTR_LOCAL_INFILE</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-local-infile-directory">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-local-infile-directory">PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-local-infile-directory">Pdo\Mysql::ATTR_LOCAL_INFILE_DIRECTORY</a></code></strong>.
     Verfügbar seit PHP 8.1.0.
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-init-command">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-init-command">PDO::MYSQL_ATTR_INIT_COMMAND</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-init-command">Pdo\Mysql::ATTR_INIT_COMMAND</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-read-default-file">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-read-default-file">PDO::MYSQL_ATTR_READ_DEFAULT_FILE</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-read-default-file">Pdo\Mysql::ATTR_READ_DEFAULT_FILE</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-read-default-group">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-read-default-group">PDO::MYSQL_ATTR_READ_DEFAULT_GROUP</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-read-default-group">Pdo\Mysql::ATTR_READ_DEFAULT_GROUP</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-max-buffer-size">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-max-buffer-size">PDO::MYSQL_ATTR_MAX_BUFFER_SIZE</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-max-buffer-size">Pdo\Mysql::ATTR_MAX_BUFFER_SIZE</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-direct-query">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-direct-query">PDO::MYSQL_ATTR_DIRECT_QUERY</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="pdo.constants.php#pdo.constants.attr-emulate-prepares">PDO::ATTR_EMULATE_PREPARES</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-found-rows">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-found-rows">PDO::MYSQL_ATTR_FOUND_ROWS</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-found-rows">Pdo\Mysql::ATTR_FOUND_ROWS</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-ignore-space">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ignore-space">PDO::MYSQL_ATTR_IGNORE_SPACE</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ignore-space">Pdo\Mysql::ATTR_IGNORE_SPACE</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-compress">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-compress">PDO::MYSQL_ATTR_COMPRESS</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-compress">Pdo\Mysql::ATTR_COMPRESS</a></code></strong>
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-server-public-key">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-server-public-key">PDO::MYSQL_ATTR_SERVER_PUBLIC_KEY</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-server-public-key">Pdo\Mysql::ATTR_SERVER_PUBLIC_KEY</a></code></strong>
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-ssl-ca">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-ca">PDO::MYSQL_ATTR_SSL_CA</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-ca">Pdo\Mysql::ATTR_SSL_CA</a></code></strong>
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-ssl-capath">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-capath">PDO::MYSQL_ATTR_SSL_CAPATH</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-capath">Pdo\Mysql::ATTR_SSL_CAPATH</a></code></strong>
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-ssl-cert">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-cert">PDO::MYSQL_ATTR_SSL_CERT</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-cert">Pdo\Mysql::ATTR_SSL_CERT</a></code></strong>
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-ssl-cipher">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-cipher">PDO::MYSQL_ATTR_SSL_CIPHER</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-cipher">Pdo\Mysql::ATTR_SSL_CIPHER</a></code></strong>
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-ssl-key">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-key">PDO::MYSQL_ATTR_SSL_KEY</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-key">Pdo\Mysql::ATTR_SSL_KEY</a></code></strong>
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-ssl-verify-server-cert">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-verify-server-cert">PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-verify-server-cert">Pdo\Mysql::ATTR_SSL_VERIFY_SERVER_CERT</a></code></strong>
     Verfügbar seit PHP 7.0.18 und PHP 7.1.4.
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-multi-statements">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-multi-statements">PDO::MYSQL_ATTR_MULTI_STATEMENTS</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias von <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-multi-statements">Pdo\Mysql::ATTR_MULTI_STATEMENTS</a></code></strong>
    </span>
   </dd>
  

 </dl>
</div>



   



<div class="section" id="pdo-mysql.configuration">
 <h2 class="title">Laufzeit-Konfiguration</h2>
 <p class="simpara">Das Verhalten dieser Funktionen wird
durch Einstellungen in der <var class="filename">php.ini</var> beeinflusst.</p>
 <p class="para">
  <table class="doctable table">
   <caption><strong>PDO_MYSQL-Konfigurationsoptionen</strong></caption>
   
    <thead>
     <tr>
      <th>Name</th>
      <th>Standard</th>
      <th>Veränderbar</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td><a href="ref.pdo-mysql.php#ini.pdo-mysql.default-socket" class="link">pdo_mysql.default_socket</a></td>
      <td>&quot;/tmp/mysql.sock&quot;</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
     </tr>

     <tr>
      <td><a href="ref.pdo-mysql.php#ini.pdo-mysql.debug" class="link">pdo_mysql.debug</a></td>
      <td>NULL</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
     </tr>

    </tbody>
   
  </table>

  Weitere Details und die Definitionen der
INI_*-Konstanten sind unter <a href="configuration.changes.modes.php" class="xref">Wo Konfigurationseinstellungen gesetzt werden k&ouml;nnen</a> zu finden.
 </p>

 <p class="para">Hier eine kurze Erklärung der
Konfigurationsoptionen:</p>

 <p class="para">
  <dl>
   
    <dt id="ini.pdo-mysql.default-socket">
     <code class="parameter">pdo_mysql.default_socket</code>
     <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    </dt>
    <dd>
     <p class="para">
      Setzt einen Unix-Domain-Socket. Wenn während der Ausführung von
      configure ein Domain-Socket gefunden wird, wird dieser Wert bereits beim
      Kompilieren gesetzt. Diese INI-Einstellung gilt nur unter Unix.
     </p>
    </dd>
   
   
    <dt id="ini.pdo-mysql.debug">
     <code class="parameter">pdo_mysql.debug</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="para">
      Aktiviert das Debugging für PDO_MYSQL. Diese Einstellung ist nur
      verfügbar, wenn PDO_MYSQL mit mysqlnd und im PDO-Debugmodus kompiliert
      wurde.
     </p>
    </dd>
   
  </dl>
 </p>
</div>



  </div>

  

 <h2>Inhaltsverzeichnis</h2><ul class="chunklist chunklist_reference"><li><a href="ref.pdo-mysql.connection.php">PDO_MYSQL DSN</a> — Verbinden mit MySQL-Datenbanken</li></ul>
</div>
<?php manual_footer($setup); ?>