MySQli mit PHP5
Anzeige
von Rene Schmidt
Umfangreicher, neuer, schneller, besser soll das neue "ext/mysqli" genannte MySQL-Modul von PHP5 sein. Diese Übersicht zeigt, wie Sie sich mit der neuen Erweiterung schnell zurecht finden.
Was gibt's Neues?
PHP5 bietet in seiner neuesten Inkarnation ein überarbeitetes MySQL-Modul an, genannt "ext/mysqli". Im Gegensatz zum alten Modul "ext/mysql" unterstützt es den vollen Funktionsumfang vom MySQL 4 und soll in Zukunft schneller mit Neuerungen von MySQL Schritt halten können.
Das Modul kann nun auch objektorientiert (OOP) angesprochen werden und fügt sich somit besser in Software ein, die die Vorteile der Objektorientierung nutzt. Entwickler sind nun nicht mehr auf Wrapper-Klassen angewiesen, die das ermöglichen. Der Artikel von Zend.com zu den Neuerungen zeigt ein Code-Beispiel.
Wie so oft, liegen die interessantesten Unterschiede im Detail. Vorneweg: Mit pconnect() und der Datenbank-Standard-Verbindung wurden zwei Merkmale entfernt, die mehr Probleme als Vorteile brachten. Achtete ein Entwickler nicht auf die Anzahl der aufgebauten Datenbank-Verbindungen, konnte es vorkommen, dass die maximal erlaubte Anzahl erreicht und die Software im Betrieb gestört wurde. Entwickler müssen auf die in der php.ini definierten Standard-Verbindung verzichten und immer im Skript explizit eine Datenbank-Verbindung herstellen lassen, wenn sie auf einen MySQL-Server zugreifen wollen.
Bound Parameter Prepared Statements und Bound Result Prepared Statements
Diese beiden Wortungetüme beschreiben zwei weitere neue Eigenschaften der Erweiterung. Mit den "Bound Result Prepared Statements" ist es möglich, ein Abfrageergebnis an vorherbestimmte PHP-Variablen zu binden. In Wirklichkeit ist das keine Neuerung, sondern nur eine Vereinfachung durch "Convenience-Methoden". Diese Verbindung ließ sich schon vorher herstellen, wenn auch erst beim oder nach dem Parsen des Ergebnisses.
"Bound Parameter Prepared Statements" sind dagegen interessanter. Ein SQL-Statement wird an den Server gesendet, bevor es mit konkreten Daten ausgeführt wird. Geschwindigkeitsvorteile können diese Methoden allerdings nur ausspielen, wenn viele Statements in einer Schleife abgearbeitet werden. Im Gegensatz zur bisherigen Vorgehensweise müssen die Statements nicht jedes Mal neu komplettiert und vom Server vor der Ausführung validiert werden. Die "vorbereiteten Statements" bieten etwas mehr Sicherheit, denn die Variablen müssen mit einer Typangabe definiert werden.
Das neue Modul kann wie bisher prozedural angesprochen werden. Die meisten Funktionen arbeiten weiterhin wie gewohnt, sie wurden nur von mysql_* in mysqli_* umbenannt. Die Umstellung kleiner PHP-Skripte und mittelgroßer Anwendungen sollte im Prinzip kein großes Problem darstellen.
Bei größeren Anwendungen kann es Probleme bei der Umstellung geben. Das gilt vor allem dann, wenn Entwickler nicht die Wahl zwischen MySQL 3.x und 4.x haben und die Umstellung schnell abgeschlossen sein muss.
Programmierer können mit "mysql2i.php" des PHP-Mitentwicklers John Coggeshall etwas Zeit gewinnen. mysql2i ist ein Wrapper, der unter PHP5 und ext/mysqli die Funktionsweise von ext/mysql nachbildet. Nicht angepasste Skripte sollen damit völlig ohne oder mit sehr wenigen Änderungen auch auf neuen PHP5/mysqli-Installationen laufen. Die Datei mysql2i.php wird per require() in ein Skript eingebunden. Der Wrapper steht unter einer BSD-ähnlichen Lizenz und kann ohne Lizenzkosten sowohl in freier Software als auch proprietär lizensierter Software eingesetzt werden.
mysql2i ist hervorragend geeignet, sich die Unterschiede zwischen ext/mysql und ext/mysqli im Detail anzusehen. Der Programmcode ist zwar so gut wie nicht dokumentiert, aber sehr einfach gehalten und daher dennoch anschaulich.
Entwickler sollten beachten, dass einige Webhoster ihren Kunden weiterhin ausschließlich MySQL 3.x anbieten. Falls diese Hoster gleichzeitig PHP5 verwenden, ist ext/mysqli nicht verfügbar. Stattdessen kommt weiterhin die alte "ext/mysql"-Erweiterung zum Einsatz.
Links zum Thema:
- Zend über ext/mysqli (englisch)
- mysql2i-Download (englisch)
- Dokumentation zu ext/mysqli (englisch, zur Zeit aktueller als die deutsche Version)
- Dokumentation zu ext/mysqli
Erstveröffentlichung 23.08.2005
Verwandte Artikel
1 Kommentar zu “MySQli mit PHP5”
Meine Meinung
Bitte beachten Sie: Werbung und Spam sind unerwünscht und können eine Rechnung zur Folge haben. Woher kommen die Bilder neben den Kommentaren?









Hallo,
die Website von 'mysql2i' funktioniert nicht mehr. Sollte man ggf. korrigieren.
Liebe Grüße,
Dennis