«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Стоит ли слепо заменять функции MySQL на MySQLi_: поучительная история?

Стоит ли слепо заменять функции MySQL на MySQLi_: поучительная история?

Опубликовано 7 ноября 2024 г.
Просматривать:887

Should You Blindly Replace MySQL Functions with MySQLi_: A Cautionary Tale?

Слепая замена функций mysql_ на mysqli_: поучительная история

В PHP 5.5 функции mysql_ устарели и с тех пор были удалены из PHP 7. Возникает вопрос, можно ли просто заменить все функции mysql_ функциями mysqli_ без каких-либо побочных эффектов.

Ответ — громкое нет.

Функциональные различия

Хотя функции mysql_ и mysqli_ имеют схожее соглашение об именах, они не эквивалентны по функциональности. Например:

  • Порядок параметров: функции mysqli_ ожидают соединение в качестве первого аргумента, а функции mysql_ — нет.
  • Синтаксис: Вызовы в стиле OO в mysqli_ требуют использования обозначения -> (например, $mysqli->query()), тогда как функции mysql_ используют процедурный стиль.
  • Обработка специальных символов: mysqli_ требует, чтобы экранированные символы были представлены в виде escape-последовательностей, в отличие от mysql_.
  • Отчеты об ошибках: mysqli_ предоставляет более подробную информацию об ошибках по сравнению с mysql_.

Рекомендации

Не рекомендуется слепо заменять функции mysql_ на mysqli_. Вместо этого необходимо тщательно обновить код, чтобы правильно использовать функции mysqli_. Это включает в себя:

  1. Установление нового соединения: Используйте mysqli_connect() или mysqli::__construct(), чтобы создать соединение и сохранить его в переменной.
  2. Изменение запросов: Обновите запросы, включив соединение в качестве первого аргумента (для процедурного стиля) или используя ->query() для объектно-ориентированного стиля.
  3. Адаптация методов выборки: mysqli_ использует mysqli_fetch_assoc() и mysqli_result->fetch_assoc() для извлечения связанных массивов соответственно.
  4. Закрытие соединения: Используйте mysqli_close() или mysqli->__destruct() для закрытия соединение.

Инструмент преобразования

Чтобы облегчить процесс миграции, доступен инструмент конвертера: https://github.com/philip/MySQLConverterTool . Однако важно отметить, что преобразованный код по-прежнему требует проверки и тестирования вручную.

Заключение

Замена функций mysql_ на mysqli_ требует некоторых усилий и внимания к деталям. Хотя функции имеют одинаковые имена, их внутренняя реализация различается. Тщательно обновляя код и проверяя его функциональность, разработчики могут обеспечить плавный переход от устаревших функций.

Заявление о выпуске Эта статья перепечатана по адресу: 1729149804. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3