sql >> Database >  >> RDS >> Mysql

Grote website overschakelen van MySQL naar MySQLi

Er is geen eenvoudig antwoord op uw vraag, aangezien praktisch elke eenvoudige manier om dit te doen, inhield dat u dingen anders moest doen toen de toepassing werd geschreven.

Als u directe aanroepen van mysql_*-functies in uw hele code hebt en geen database-abstractielaag waar u uw query's uitvoert via een helperklasse of -functie, dan moet u elke opdracht bewerken.

Je kunt niet zomaar wegkomen met het toevoegen van een i aan commando's zoals mysql_query als procedureel mysqli_query() vereist dat de eerste parameter de link is naar de db waar met mysql_query() als er al een verbinding werd gegeven, was het een tweede parameter.

In plaats van alleen mysql_query(...) te veranderen in mysqli_query($link,.....) zou ik aanraden dat er geen beter moment is om een ​​db-abstractielaag op zijn plaats te zetten. Gebruik dus functies zoals sql_query() die uw zoekopdrachten daadwerkelijk verwerken, dus als u in de toekomst DB opnieuw moet wijzigen, kunt u de db-specifieke opdrachten in één abstractiebestand bijwerken. Op die manier, als je een functie schrijft die mysqli_query omhult, kun je eenvoudig je mysql_query() hernoemen naar je helperfunctie en de helperfunctie zich zorgen maken over het plaatsen van de link daar.

Hoewel dat de eenvoudigste manier is, zal het geen parameters binden of verklaringen opstellen, wat een belangrijke factor is bij het voorkomen van kwetsbaarheden voor sql-injectie

Nadat u al deze opdrachten hebt gewijzigd, moet u testen.

Als je geen geautomatiseerde tests hebt geschreven, is dit waarschijnlijk een goed moment om ermee te beginnen. Ook al moet u controleren of elke wijziging heeft gewerkt, als u dit doet door middel van een geautomatiseerde test, kunt u die pijn in de toekomst vermijden.



  1. Hoe kan ik een printstatement simuleren in MySQL?

  2. wat zijn de veranderingen in mysql 8 resultaat rowset case?

  3. Min-operator geeft me fouten in mysql

  4. Toon alleen de meest recente datum van de samengevoegde MySQL-tabel