Wenn ich versuche, von PHP aus eine Verbindung zu einem MySQL-Server herzustellen, wird die folgende Fehlermeldung angezeigt:
Veraltet: Die mysql-Erweiterung ist veraltet und wird in Zukunft entfernt: Verwenden Sie stattdessen mysqli oder PDO in /path/to/filename.php in Zeile 123
Der Code in der referenzierten Zeile lautet:
mysql_connect($server, $username, $password);
Ich bin sicher, dass die Argumente korrekt sind, und genau dieser Code funktioniert seit Jahren ohne Probleme. Tatsächlich habe ich es aus einem gut beschafften Tutorial zu PHP erhalten.
-
Warum passiert dies?
-
Wie kann ich es reparieren?
-
Ich verstehe, dass es möglich ist, Verfallsfehler durch Einstellung zu unterdrücken
error_reporting
inphp.ini
ausschließenE_DEPRECATED
:error_reporting = E_ALL ^ E_DEPRECATED
Was passiert, wenn ich das tue?
Hier gibt es ein Source-Scanning-Tool zum Konvertieren von mysql in mysqli: Konvertieren zu MySQLi (Dezember 2011; von Keith Larson; Oracle Mysql Wiki)
– hakre
27. September 2013 um 9:50 Uhr
Verwenden
pdo_query()
. Es ist der einfachste Upgrade-Pfad von mysql_ und verwendet PDO; Dies ist die freundlichere der beiden Alternativen. MYSQLI ist wirklich nur eine Stop-Gap-API; klingt aufgrund der Namensähnlichkeit zunächst verlockend für Neueinsteiger, erfordert aber aufgrund der verschobenen Funktionssignaturen mehr Umschreibung und macht dann sogar parametrisierte Abfragen aufwändiger.– mario
29. Dezember 2013 um 19:46 Uhr
Um den Fragentitel zu beantworten – PDO ist allgemeiner und allgemein es ist eine bessere Lösung. @DennisDegryse => Obwohl ich objektorientiertes PDO bevorzuge, HAT MySQLi auch eine objektorientierte Möglichkeit, es zu verwenden (suchen Sie nach “mysqli class”). Mehr zum Vergleich zwischen PDO|MySQLi auf code.tutsplus.com/tutorials/… und php.net/manual/en/mysqli.overview.php
– jave.web
19. August 2015 um 11:19 Uhr
Nichts gefunden bei Oracle Mysql Wiki (Weblink oben kommentiert) .
– David Augustus
22. Januar 2016 um 4:26 Uhr
@hakre Danke für den Link zum Tool. Nur als allgemeine Anmerkung: Beachten Sie bitte, dass Sie mysql_ für einige Befehle nicht einfach in mysqli_ umwandeln können, da sie anders funktionieren.
– Benutzer1239087
19. Januar 2017 um 3:45 Uhr