Die Umstellung auf MySQLi war unumgänglich, denn die alte mysql-Extension war schlichtweg veraltet. Außerdem war man bei der Erweiterung immer auf Abwärtskompatibilität bedacht, sodass es schwer war, den Code zu pflegen. Der Code geht auf die frühen Tage von PHP und MySQL zurück und wurde zum Teil nicht optimal entwickelt.
Wenn beispielsweise keine explizite Verbindungsressource angegeben war, haben alle Funktionen versucht, die zuletzt genutzte Verbindung zu verwenden. Hatte man als Nutzer großes Pech, konnte es sogar passieren, dass mysql_query() auf eine komplett andere Datenbank zugriff. Die Verbindungskennung war in der alten Funktion optional, in der neuen Extension muss diese jetzt angegeben werden. Außerdem wurden Prepared Statements hinzugefügt, die das Auslesen von Daten aus der DB-Tabelle schneller und sicherer machen.
Praktischerweise lassen sich viele Funktionen einfach dadurch modifizieren, dass ein -i zur mysql()-Funktion hinzufügt wird. Es gibt jedoch auch einige Unterschiede zwischen den beiden Erweiterungen.
Code-Snippet: Verbindungskennung in MySQL und MySQLi
Einige mysqli()-Funktionen benötigen eine Verbindungskennung – eine PHP-Variable, die bei der Verbindung zur Datenbank erzeugt wird. In diesem Beispiel heißt sie: $link.