sql >> Databáze >  >> RDS >> Mysql

Přepněte velký web z MySQL na MySQLi

Na vaši otázku neexistuje snadná odpověď, protože prakticky každý jednoduchý způsob, jak toho dosáhnout, zahrnoval dělat věci jinak, když byla aplikace napsána.

Pokud máte v kódu přímá volání funkcí mysql_* a nemáte žádnou abstrakční vrstvu databáze, kde provádíte dotazy prostřednictvím pomocné třídy nebo funkce, budete muset upravit každý příkaz.

Nemůžete jen tak uniknout přidání i k příkazům jako mysql_query jako procedurálně mysqli_query() vyžaduje, aby první parametr byl odkaz na db kde pomocí mysql_query() pokud bylo připojení vůbec zadáno, byl to druhý parametr.

Namísto pouhé změny mysql_query(...) na mysqli_query($link,.....) bych doporučil, že neexistuje lepší čas pro zavedení abstrakce db. Používejte tedy funkce, např. sql_query(), které skutečně zpracovávají vaše dotazy, takže pokud budete v budoucnu potřebovat znovu změnit DB, stačí aktualizovat příkazy specifické pro db v jednom souboru abstrakce. Pokud tedy napíšete funkci, která zabalí mysqli_query, mohli byste být schopni jednoduše přejmenovat svou mysql_query() na vaši pomocnou funkci a nechat pomocnou funkci starat se o vložení odkazu.

I když je to nejjednodušší způsob, nebude vázat parametry ani připravovat příkazy, což je hlavní faktor v prevenci zranitelnosti vkládání SQL

Jakmile změníte všechny tyto příkazy, musíte je otestovat.

Pokud nemáte napsané žádné automatické testy, pak je pravděpodobně vhodný čas je začít psát. I když budete muset zkontrolovat, zda každá změna fungovala, pokud to uděláte automatickým testem, můžete se této bolesti v budoucnu vyhnout.



  1. MySql - řazení podle názvu měsíce

  2. Sériová čísla na skupinu řádků pro složený klíč

  3. Deklarování a nastavení proměnných v příkazu Select

  4. MySQL:Nevkládejte nový řádek, pokud jsou definované řádky stejné