В чем разница между MySQL, MySQLi и PDO?

В чем разница между MySQL, MySQLi и PDO ?

Какой из них лучше всего подходит для использования с PHP-MySQL?

Есть более чем три популярных способа использования MySQL с PHP.

  1. ( DEPRECATED ) Функции mysql являются процедурными и используют ручное экранирование.
  2. MySQLi является заменой функций mysql, с объектно-ориентированными и процедурными версиями. Он поддерживает подготовленные заявления.
  3. PDO (объекты данных PHP) – это общий уровень абстракции базы данных с поддержкой MySQL среди многих других баз данных. Он предоставляет подготовленные заявления и значительную гибкость в отношении того, как данные возвращаются.

Я бы рекомендовал использовать PDO с подготовленными инструкциями. Это хорошо разработанный API и позволит вам более легко перейти к другой базе данных (включая любые, поддерживающие ODBC ), если это необходимо.

Это разные API-интерфейсы для доступа к серверу MySQL

  • Mysql – это исторический API
  • Mysqli – это новая версия исторического API. Он должен работать лучше и иметь лучший набор функций. Кроме того, API является объектно-ориентированным.
  • PDO_MySQL , является MySQL для PDO. PDO был введен в PHP, и проект направлен на создание общего API для доступа к базам данных, поэтому теоретически вы должны иметь возможность осуществлять миграцию между RDMS без изменения какого-либо кода (если вы не используете определенную функцию RDBM в своих запросах ), также объектно-ориентированный.

Так что это зависит от того, какой код вы хотите произвести. Если вы предпочитаете объектно-ориентированные слои или простые функции …

Мой совет будет

  1. PDO
  2. MySQLi
  3. MySQL

Также мое чувство, API mysql, вероятно, будет удален в будущих версиях PHP .

Существует таблица, сравнивающая три функции API. Используйте Mysqli, когда это возможно, как это последнее, запущенное после PDO, и оно будет поддерживаться в будущем.

mysqli – это расширенная версия mysql.

Расширение PDO определяет легкий, согласованный интерфейс для доступа к базам данных на PHP. Каждый драйвер базы данных, реализующий интерфейс PDO, может выставлять функции, специфичные для базы данных, как регулярные функции расширения.

В частности, расширение MySQLi предоставляет следующие чрезвычайно полезные преимущества для старого расширения MySQL.

Интерфейс OOP (в дополнение к процедурной) Подготовленная заявка Поддержка Транзакция + Сохраненная процедура Поддержка более сильных улучшений скорости синтаксиса Расширенная отладка

Расширение PDO

Расширение объектов данных PHP – это уровень абстракции базы данных. В частности, это не интерфейс MySQL, поскольку он предоставляет драйверы для многих движков баз данных (конечно, включая MYSQL).

PDO стремится обеспечить согласованный API, который означает, что при изменении механизма базы данных код изменяется, чтобы отразить это, и должен быть минимальным. При использовании PDO ваш код будет обычно «работать» во многих механизмах баз данных, просто изменив используемый вами драйвер.

Помимо совместимости с несколькими базами данных, PDO также поддерживает подготовленные операторы, хранимые процедуры и многое другое, используя драйвер MySQL.

Просто мы можем сказать, MySQL улучшен расширение, предлагая различные преимущества. Расширение mysqli позволяет вам получить доступ к функциям, предоставляемым MySQL 4.1 и выше.

Расширение PHP Data Objects (PDO) определяет легкий, согласованный интерфейс для доступа к базам данных на PHP. Каждый драйвер базы данных, реализующий интерфейс PDO, может выставлять функции, специфичные для базы данных, как регулярные функции расширения. Обратите внимание, что вы не можете выполнять какие-либо функции базы данных, используя само расширение PDO; вы должны использовать драйвер PDO для конкретной базы данных для доступа к серверу базы данных.