Краткият отговор ене , функциите не са еквивалентни.
Добрата новина е, че има инструмент за конвертиране, който ще ви помогне, ако имате много обаждания/проекти за промяна. Това ще позволи на вашите скриптове да работят веднага.
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_
или използвайте набора от резултати като обект.