MySQL против MySQLi при использовании PHP

Что лучше, MySQL или MySQLi? И почему? Что я должен использовать?

Я имею в виду лучше не только с точки зрения производительности, но и с любой другой соответствующей функцией.

Ответ 1

Если вы посмотрите Улучшенный обзор расширений MySQL, он должен рассказать вам все, что вам нужно знать о различиях между ними.

Основные полезные функции:

  • Объектно-ориентированный интерфейс
  • поддержка подготовленных операторов
  • поддержка нескольких операторов
  • поддержка транзакций
  • расширенные возможности отладки
  • поддержка встроенного сервера.

Ответ 2

Существует справочная страница, посвященная выбору между mysql, mysqli и PDO в

Команда PHP рекомендует mysqli или PDO_MySQL для новой разработки:

Рекомендуется использовать расширения mysqli или PDO_MySQL. Не рекомендуется использовать старое расширение mysql для новой разработки. Ниже приведена подробная матрица сравнения функций. Общая производительность всех трех расширений считается примерно одинаковой. Хотя производительность расширения вносит лишь часть общего времени выполнения веб-запроса PHP. Часто это воздействие достигает 0,1%.

На странице также есть матрица характеристик, сравнивающая API расширений. Основные отличия между mysqli и mysql API заключаются в следующем:

                               mysqli     mysql
Development Status             Active     Maintenance only
Lifecycle                      Active     Long Term Deprecation Announced*
Recommended                    Yes        No
OOP API                        Yes        No
Asynchronous Queries           Yes        No
Server-Side Prep. Statements   Yes        No
Stored Procedures              Yes        No
Multiple Statements            Yes        No
Transactions                   Yes        No
MySQL 5.1+ functionality       Yes        No

* http://news.php.net/php.internals/53799

Существует дополнительная функциональная матрица, сравнивающая библиотеки (новый mysqlnd versus libmysql) в

и очень тщательная статья в блоге

Ответ 3

Я отказался от использования mysqli. Это просто слишком неустойчиво. У меня были запросы, которые разбивают PHP с помощью mysqli, но отлично работают с пакетом mysql. Также mysqli падает на столбцах LONGTEXT. Эта ошибка была поднята в различных формах с по крайней мере 2005 и остается сломанной. Я бы очень хотел использовать подготовленные инструкции, но mysqli просто недостаточно надежный (и никто, похоже, не исправляет его). Если вы действительно хотите, чтобы подготовленные утверждения шли с PDO.

Ответ 4

MySQLi означает, что MySQL улучшен. Это объектно-ориентированный интерфейс с привязками MySQL, который упрощает использование. Он также предлагает поддержку подготовленных операторов (которые очень полезны). Если вы используете PHP 5, используйте MySQLi.

Ответ 5

Чем лучше PDO; это менее крутой интерфейс, а также предоставляет те же функции, что и MySQLi.

Использование подготовленных операторов хорошо, потому что оно исключает возможности SQL-инъекций; использование подготовленных операторов на стороне сервера плохо, потому что оно увеличивает количество раундов.

Ответ 6

для меня подготовленные операторы являются обязательной функцией. точнее, привязка параметра (которая работает только с подготовленными операторами). это единственный разумный способ вставки строк в команды SQL. я действительно не доверяю функциям "экранирования". соединение с БД является двоичным протоколом, зачем использовать суб-протокол с ограничением ASCII для параметров?