Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wechseln Sie große Websites von MySQL zu MySQLi

Es gibt keine einfache Antwort auf Ihre Frage, da praktisch jeder einfache Weg, dies zu tun, bedeutete, Dinge anders zu machen, als die Anwendung geschrieben wurde.

Wenn Sie in Ihrem gesamten Code direkte Aufrufe an mysql_*-Funktionen haben und keine Datenbankabstraktionsschicht, in der Sie Ihre Abfragen über eine Hilfsklasse oder -funktion ausführen, müssen Sie jeden Befehl bearbeiten.

Sie können Befehlen wie mysql_query nicht einfach ein i als prozedurales mysqli_query() hinzufügen erfordert, dass der erste Parameter der Link zur Datenbank ist, wo mit mysql_query() wenn überhaupt eine Verbindung gegeben war, war es ein zweiter Parameter.

Anstatt nur mysql_query(...) in mysqli_query($link,.....) zu ändern, würde ich empfehlen, dass es keinen besseren Zeitpunkt gibt, um eine DB-Abstraktionsschicht einzurichten. Verwenden Sie also Funktionen, z. B. sql_query(), die Ihre Abfragen tatsächlich verarbeiten. Wenn Sie also in Zukunft die DB erneut ändern müssen, können Sie einfach die db-spezifischen Befehle in einer Abstraktionsdatei aktualisieren. Auf diese Weise könnten Sie, wenn Sie eine Funktion schreiben, die mysqli_query umschließt, Ihre mysql_query() einfach in Ihre Hilfsfunktion umbenennen und die Hilfsfunktion sich darum kümmern, den Link dort einzufügen.

Obwohl dies der einfachste Weg ist, werden keine Parameter gebunden oder Anweisungen vorbereitet, was ein wichtiger Faktor beim Verhindern von SQL-Injection-Schwachstellen ist

Sobald Sie alle diese Befehle geändert haben, müssen Sie sie testen.

Wenn Sie keine automatisierten Tests geschrieben haben, ist dies wahrscheinlich ein guter Zeitpunkt, um mit dem Schreiben zu beginnen. Auch wenn Sie überprüfen müssen, ob jede Änderung funktioniert hat, können Sie diesen Ärger in Zukunft vermeiden, wenn Sie dies durch einen automatisierten Test tun.