2017-01-23 3 views
-1

Они, похоже, одно и то же, и все же разные. Я не знаю, какой из них: Я знаю, что мы можем использовать PDO как new PDO() и использовать методы prepare() и query(), чтобы извлекать данные из базы данных. Итак, если это PDO, упомянутый в списке расширений, то что именно (в терминах laymans) есть pdo_mysql и mysqlnd?В чем разница между расширениями Mysqlnd, PDO и PDO_Mysql в php?

+0

См. Также: http://php.net/manual/en/mysqlinfo.api.choosing.php и http://php.net/manual/en/mysqlinfo.library.choosing.php – mario

+0

Я прочитал это на самом деле, я просто не могу сделать связь (не каламбур) между тремя из них –

+1

Я * думаю * (и я уверен, что кто-то исправит меня, если я ошибаюсь), что mysqlnd является фактическим драйвером, который соединяет PHP с mysql. PDO и mysqli - это API, которые отправляют данные через mysqlnd на сервер mysql. – aynber

ответ

-1

Вам необходимо PDO_Mysql использовать базу данных mysql с PDO. Это водитель.

Mysqld - это сервер Mysql, к которому вы обращаетесь с использованием PDO или mysqli.

Mysqlnd - это библиотека/драйвер для связи с сервером Mysql, и PDO, и mysqli используют его.

+3

Если вы хотите ответить на этот вопрос, сделай это правильно. Показывать цитаты из официальных документов. Кроме того, OP спрашивает о 'mysqlnd' - НЕ' mysqld'. То, что вы заявили до сих пор, в лучшем случае является маргинальным и может быть просто комментарием. –

2

PDO сам по себе является database abstraction layer, предлагаемый PHP. Это не может означать совсем то, что вы думаете, что делает, но PHP очищает, что в the PDO documentation:

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

В зависимости от вашей системы, you might need to enable its driver, прежде чем вы сможете это использовать. (Но, вероятно, нет.)

Вы можете использовать PDO с различными базами данных (MySQL, Oracle, PostgreSQL и т. Д.), Но вам понадобится enable the specific driver для типа базы данных, которую вы хотите использовать. Из той же самой документации по PDO, которую я связал ранее:

Обратите внимание, что вы не можете выполнять какие-либо функции базы данных, используя само расширение PDO; вы должны использовать драйвер PDO для конкретной базы данных для доступа к серверу базы данных.

pdo_mysql является одним из них. Эти драйверы реализуют интерфейс PDO, что означает, что они позволяют использовать prepare(), query() и т. Д. с вашей конкретной базой данных.

mysqlnd обрабатывает связь между PHP и MySQL. Это был драйвер по умолчанию для всех расширений MySQL (например, pdo_mysql) с версии PHP версии 5.4, поэтому, если вы используете поддерживаемую версию PHP, вы, вероятно, используете ее. Но он работает за кулисами, просто обрабатывая общение. Вы не будете использовать функции mysqlnd. Из «Что не» части the mysqlnd documentation:

Хотя MySQL Native Driver написан как расширение PHP, важно отметить, что она не обеспечивает новый API на PHP программиста. API-интерфейсы программистов для подключения к базе данных MySQL предоставляются расширением MySQL, mysqli и PDO MYSQL. Эти расширения теперь могут использовать службы MySQL Native Driver для связи с сервером MySQL. Поэтому вы не должны думать о Native Driver MySQL как API.

Смежные вопросы