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

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

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

+121
источник поделиться
6 ответов

Существует (более) три популярных способа использования MySQL из PHP. Здесь изложены некоторые особенности/различия PHP: Выбор API:

  1. (УСТАРЕЛО) Функции mysql являются процедурными и используют экранирование вручную.
  2. MySQLi - это замена функций mysql объектно-ориентированной и процедурной версиями. Он поддерживает подготовленные заявления.
  3. PDO (PHP Data Objects) - это общий уровень абстракции базы данных с поддержкой MySQL среди многих других баз данных. Это обеспечивает готовые заявления и значительную гибкость в том, как данные возвращаются.

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

+93
источник

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

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

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

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

  • PDO
  • MySQLi
  • MySQL

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

+41
источник
другие ответы

Связанные вопросы


Похожие вопросы

mysqli - расширенная версия mysql.

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

+3
источник

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

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

Расширение PDO

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

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

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

+3
источник

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

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

+1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос