Mysql
 sql >> база данни >  >> RDS >> Mysql

Превключете голям уебсайт от MySQL към MySQLi

Няма лесен отговор на вашия въпрос, тъй като практически всеки прост начин да направите това включваше правене на нещата по различен начин, когато приложението беше написано.

Ако имате директни извиквания към mysql_* функции в целия си код и няма слой за абстракция на базата данни, където правите вашите заявки чрез помощен клас или функция, тогава ще трябва да редактирате всяка команда.

Не можете просто да се измъкнете с добавяне на i към команди като mysql_query като процедурно mysqli_query() изисква първият параметър да бъде връзката към db, където с mysql_query() ако изобщо е дадена връзка, това е втори параметър.

Вместо просто да променяте mysql_query(...) на mysqli_query($link,.....), бих препоръчал, че няма по-добро време за поставяне на db абстракционен слой на място. Така че използвайте функции, напр. sql_query(), които всъщност обработват вашите заявки, така че в бъдеще, ако трябва да промените отново DB, можете просто да актуализирате db специфичните команди в един абстрактен файл. По този начин, ако напишете функция, която обгръща mysqli_query, можете просто да преименувате своя mysql_query() на вашата помощна функция и да оставите помощната функция да се тревожи за поставянето на връзката там.

Въпреки че това е най-простият начин, той няма да обвърже параметри или да подготви изрази, което е основен фактор за предотвратяване на уязвимости при инжектиране на sql

След като сте променили всички тези команди, трябва да тествате.

Ако нямате написани автоматизирани тестове, това вероятно е добър момент да започнете да ги пишете. Въпреки че ще трябва да проверите дали всяка промяна е проработила, ако го направите чрез автоматизиран тест, можете да избегнете тази болка в бъдеще.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. каква е разликата между UNIQUE INDEX и UNIQUE KEY?

  2. Използването на TYPE =InnoDB в MySQL хвърля изключение

  3. как да използвате Fuzzy look up, за да намерите изречението в SQL?

  4. Хибернацията не генерира каскада

  5. Как проверявате за съвпадаща стойност в третата колона въз основа на различни комбинации от други две колони?