MySQL PDO-Treiber (PDO_MYSQL)MySQL PDO-Treiber
&reftitle.intro;
PDO_MYSQL ist ein Treiber, der die
PHP Data Objects (PDO)-Schnittstelle
implementiert, um von PHP aus auf MySQL Datenbanken zugreifen zu können.
PDO_MYSQL verwendet standardmäßig emulierte vorbereitete Anweisungen.
MySQL 8
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
mysql_native_password gesetzt werden, da sonst
Fehler angezeigt werden wie The server requested authentication
method unknown to the client [caching_sha2_password], auch
wenn caching_sha2_password nicht verwendet wird.
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
default_authentication_plugin=mysql_native_password in
der Datei my.cnf geändert werden. Das Plugin
caching_sha2_password wird seit PHP 7.4.4
vollständig unterstützt. In älteren Versionen wird es von der Erweiterung
mysql_xdevapi unterstützt.
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.
Der MySQL-Treiber unterstützt die Konstante
PDO::PARAM_INPUT_OUTPUT über die Methode
PDOStatement::bindParam nicht korrekt; solche
Parameter können zwar verwendet werden, werden aber nicht aktualisiert
(&dh; die eigentliche Ausgabe wird ignoriert).
&reference.pdo-mysql.configure;
&reference.pdo-mysql.constants;
&reference.pdo-mysql.ini;
PDO_MYSQL DSNVerbinden mit MySQL-Datenbanken
&reftitle.description;
Der Data Source Name (Name der Datenquelle, DSN) von PDO_MYSQL setzt sich
aus den folgenden Elementen zusammen:
DSN-Präfix
Das DSN-Präfix ist mysql:.
host
Der Name des Rechners, auf dem sich der Datenbankserver befindet
port
Die Nummer des Ports, an dem der Datenbankserver lauscht
dbname
Der Name der Datenbank
unix_socket
Der MySQL-Unix-Socket (sollte nicht mit host oder
port verwendet werden).
charset
Der Zeichensatz. Weitere Informationen enthält die Dokumentation zum
Zeichensatz-Konzept.
&reftitle.examples;
DSN-Beispiele für PDO_MYSQL
Das folgende Beispiel zeigt einen PDO_MYSQL-DSN für die Verbindung zu
einer MySQL-Datenbank:
Ein paar komplettere Beispiele:
&reftitle.notes;
Nur Unix:
Wenn der Hostname auf "localhost" gesetzt ist, wird
die Verbindung zum Server über einen Domain-Socket hergestellt. Wenn
PDO_MYSQL gegen libmysqlclient kompiliert wurde, ist der Speicherort der
Socket-Datei der einkompilierte Speicherort von libmysqlclient. Wenn
PDO_MYSQL gegen mysqlnd kompiliert wurde, kann der Standard-Socket mit
der Einstellung
pdo_mysql.default_socket
festgelegt werden.