Короткий ответ no, функции не эквивалентны.
Хорошей новостью является инструмент конвертера, который поможет вам, если у вас есть много вызовов/проектов для изменения. Это позволит вашим скриптам работать сразу.
https://github.com/philip/MySQLConverterTool
Это раздвоенный версия Oracle оригинальной версии, и это кошерно.
Тем не менее, это не слишком сложно, чтобы обновить свой код, и вы можете перейти на объектно ориентированной методологии в любом случае ...
1) Связь
Для всех намерений и целей , вам нужна новая функция соединения, которая сохраняет соединение как переменную PHP, например;
$mysqli = new mysqli($host,$username,$password,$database);
Уведомление Я сохранил подключение к $mysqli
. Вы можете сохранить до $db
или что угодно, но вы должны использовать это во всем своем коде для ссылки на соединение.
Не забудьте проверить наличие ошибки соединения;
if ($mysqli->connect_errno) echo "Error - Failed to connect to MySQL: " . $mysqli->connect_error;
2) Запросов
Примечание: Вы должны защитить от инъекции SQL с подготовленными заявлениями, которые доступны в MySQLi. Взгляните на How can I prevent SQL injection in 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();
Я был бы здесь навсегда, если бы прошел через все их, но у вас есть идея. Взгляните на the documentation для получения дополнительной информации. Не забудьте преобразовать любые функции закрытия соединения, результата или функции подсчета и подсчета строк.
Основное правило для функций, которые используют соединение с базой данных, теперь необходимо включить его в функцию (либо в качестве первого аргумента в процедуре, либо в объект, который вы используете для вызова функции в OO), или для набора результатов вы можете просто изменить функцию на mysqli_
или использовать результирующий набор как объект.
Нет такой кошерной версии такого преобразования. Любое преобразование должно включать подготовленные заявления. В противном случае это не имеет никакого смысла. –
@YourCommonSense В этом разница между конверсией и рефакторингом. Каждый должен реорганизовать свой код для использования подготовленных операторов, и я указываю, что в моем ответе, но это не то же самое, что конвертировать из 'ext: mysql' в' ext: mysqli', о чем спрашивает этот вопрос. – worldofjr
«Новые mysqli()» и «mysqli_query ($ link, $ sqlStatement)» меняли мою страницу. Обновлено до Ubuntu 16, а стек лампы - с php 7. Все старые функции mysql устарели после 5.something. Благодарю. – user208145