PHP: Warum du keine mysql_* Funktionen mehr benutzen solltest
In vielen PHP Tutorials in denen beschrieben wird wie man eine MySQL Datenbank anbindet
werden Funktionen wie mysql_connect()
oder mysql_query()
verwendet. Diese stammen
aus der Erweiterung ext/mysql
und sollten aktuell nicht mehr verwendet werden.
Es handelt sich dabei um Funktionen einer veralteten PHP Erweiterung (ext/mysql
). Diese
Erweiterung wird nicht mehr weiterentwickelt. Mit PHP Version 5.5 (veröffentlicht im Juni 2013) wurde
diese Erweiterung offiziell als nicht mehr unterstützt
gekennzeichnet.
Mit PHP Version 7.0 (veröffentlicht im Dezember 2015) wurde diese MySQL Erweiterung
dann endgültig entfernt.
Das bedeutet auch, dass es seit dem 31. Dezember 2018
keine offiziel unterstützte Version von PHP mehr gibt welche die Erweiterung
ext/mysql
mitbringt.
Darüber hinaus sprechen folgende technische Gründe für die Verwendung einer
der neueren Erweiterungen (ext/mysqli
oder ext/pdo_mysql
). Die alte
ext/mysql
Erweiterung unterstützt folgende Dinge allesamt nicht:
- Prepared statements
- Parameterized Queries
- Stored procedures
- Transaktionen
- Objektorientiertes Interfaces.
- Nicht-blockierende, asynchrone Queries.
- Multiple statements
- Sämtliche neue Funktionalitäten die seit MySQL 5.1 neu hinzugekommen sind. Darunter fällt auch die neue Passwortauthentifizierungsmethode welche seit MySQL 5.6 standartmäßig aktiviert ist und seit MySQL 5.7 zwingend erforderlich ist.
Besonders die fehlende Unterstützung für prepared statements ist ein großer Nachteil. Prepared statements helfen einem unter anderem dabei die Anwendung gegen Attacken wie SQL injections abzusichern.
Einen Vergleich der beiden aktuellen Erweiterungen (ext/mysqli
oder ext/pdo_mysql
)
findest du hier.