PHP: Warum du keine mysql_* Funktionen mehr benutzen solltest

Sun, Aug 11, 2019 1 Minute zum Lesen

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.