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

Мога ли сляпо да заменя всички mysql_ функции с mysqli_?

Краткият отговор ене , функциите не са еквивалентни.

Добрата новина е, че има инструмент за конвертиране, който ще ви помогне, ако имате много обаждания/проекти за промяна. Това ще позволи на вашите скриптове да работят веднага.

https://github.com/philip/MySQLConverterTool

Това е раздвоена версия на оригиналната версия на Oracle и е кошерна.

Въпреки това не е много трудно да актуализирате кода си и може да искате да мигрирате към обектно-ориентирана методология...

1) Връзката

За всички намерения и цели имате нужда от нова функция за свързване, която запазва връзката като PHP променлива, например;

$mysqli = new mysqli($host, $username, $password, $database);

Забележете, че записах връзката в $mysqli . Можете да запишете в $db или каквото искате, но трябва да използвате това в целия си код, за да препратите връзката.

Не забравяйте да активирате отчитането на грешки за mysqli, преди да отворите връзката;

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

2) Заявката

Забележка:Трябва да се предпазите от SQL инжектиране с подготвени оператори, които са налични в MySQLi. Разгледайте Как мога да предотвратя SQL инжектирането в PHP? , но тук ще разгледам само основните неща.

Сега трябва да включите връзката като аргумент във вашата заявка и други mysqli_ функции. В процедурния код това е първият аргумент, в OO го пишете като метод на клас.

Процедура:

$result = mysqli_query($mysqli, $sql);

OO:

$result = $mysqli->query($sql);

3) Извличане на резултат

Извличането на резултата е подобно на стария mysql_ функция в процедурна;

while ($row = mysqli_fetch_assoc($result))

но като $result вече е обект в mysqli, можете да използвате извикването на функция за обект;

while ($row = $result->fetch_assoc())

4) Затваряне на връзката

Така че, както преди, трябва да включите връзката във функцията за затваряне; като аргумент в процедурата;

mysqli_close($mysqli);

и като обект, върху който изпълнявате функцията в OO;

$mysqli->close();

Бих бил тук завинаги, ако ги прегледах всички, но разбирате идеята. Разгледайте документацията за повече информация. Не забравяйте да преобразувате всички функции за затваряне на връзка, освобождаване на резултата или функции за преброяване на грешки и редове.

Основното правило е за функции, които използват връзката към базата данни, трябва да я включите във функцията сега (или като първи аргумент в процедурата, или обекта, който използвате за извикване на функцията в OO), или за набор от резултати можете просто да промените функцията на mysqli_ или използвайте набора от резултати като обект.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да програмирам MySQL тригер за вмъкване на ред в друга таблица?

  2. Урок за архивиране и възстановяване (експортиране и импортиране) на MySQL бази данни

  3. Грешка при използване освен в заявка

  4. Мога ли да създам база данни, използвайки PDO в PHP?

  5. MySQL - Направете съществуващо поле уникално