Что такое подготовленные на стороне клиента заявления?

Попытка узнать что-то новое – в частности, пытаясь выбрать, использовать MySQLi или PDO для будущих проектов при работе с MySQL – я наткнулся на эту страницу, на которой представлен обзор доступных мне вариантов.

В нижней части этой страницы находится таблица, сравнивающая функциональность трех основных методов связи с mysql. В строке « API поддерживает подготовленные заявления на стороне клиента » говорится, что PDO поддерживает это, а MySQLi – нет.

Я знаю, какие подготовленные заявления есть. Ответ на этот вопрос является простым примером того, что, по моему мнению, является подготовленными на стороне сервера заявлениями. И PHP – это серверный язык, который, в свою очередь, должен означать, что не имеет значения, доступны ли подготовленные заявления на стороне клиента или нет. Но это заставляет меня задаться вопросом, почему это даже указано в руководстве по PHP.

Итак, какие подготовленные заявления на стороне клиента?

Related of "Что такое подготовленные на стороне клиента заявления?"

Очевидно, что подготовленные на стороне клиента операторы являются операциями, которые готовятся клиентом, а не сервером.

PDO – это уровень абстракции доступа к данным, который поддерживает несколько интерфейсов СУБД (драйверов), некоторые из которых поддерживают подготовленные на стороне сервера операторы (например, MySQL 4.1+), некоторые из которых не являются (например, MySQL 3).

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

Причина, по которой MySQLi не поддерживает их, проста: MySQLi – это расширение, специфичное для MySQL, RDBMS, которое действительно поддерживает подготовленные на стороне сервера инструкции, поэтому нет никаких оснований для имитации их.

Как было сказано в комментариях, в этом случае «клиент» относится к PHP и «сервер» к MySQL. PDO поддерживает базы данных, отличные от MySQL. Не все эти драйверы баз данных / db поддерживают подготовленные инструкции изначально, и в этих случаях PDO будет эмулировать эти утверждения самостоятельно. MySQLi не будет (я не знаю наверняка, когда это будет необходимо – может быть, когда дело касается старого драйвера MySQL?).

Еще один фактор, который вы, возможно, захотите рассмотреть – некоторые фреймворки PHP требуют PDO и не поддерживают mysqli.

С помощью PDO вы можете использовать подготовленные операторы (в коде), поддерживает ли база данных, с которой вы подключаетесь с PDO, или нет.

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