PHP: Warum mysql_* wirklich weg muss
Ich schreib das 2013. Wenn du das 2024 liest und noch mysql_connect() in deinem Code hast: bitte hör auf. Nicht weil ich böse bin, sondern weil diese Funktionen seit PHP 7.0 komplett entfernt sind und weil sie vorher schon ein Sicherheitsrisiko waren.
Was falsch ist an mysql_*
Drei Dinge. Erstens: keine Prepared Statements. Das bedeutet du musst manuell escapen, und manuell escapen macht Fehler. Fehler bedeuten SQL-Injection. Zweitens: die Funktionen sind deprecated seit PHP 5.5 und in PHP 7 entfernt – Code der sie benutzt läuft also auf einer alten, unsicheren PHP-Version. Drittens: kein objektorientiertes Interface, keine moderne Fehlerbehandlung.
PDO oder MySQLi?
Beide sind besser als mysql_*. PDO hat den Vorteil dass es datenbankagnostisch ist – wenn du mal von MySQL auf PostgreSQL wechselst, ist der Wechsel kleiner. MySQLi ist MySQL-spezifisch aber hat ebenfalls Prepared Statements und ist gut dokumentiert. Ich bevorzuge PDO, aber wer MySQLi schon kennt und richtig benutzt: auch gut.
Der Wechsel ist nicht so schlimm wie er aussieht. Meist eine Frage von Tagen für ein mittelgroßes Projekt, wenn man systematisch vorgeht.
Update 2024: Ich hab diesen Beitrag 2013 geschrieben und immer noch sehe ich mysql_connect() in Code. Deshalb bleibt der Beitrag online.
← zurück zu PHP 📂 Archiv