Использование команды PREPARE (SQL) против PDO или функции mysqli - PullRequest
1 голос
/ 17 февраля 2011

Я разрабатываю веб-приложения с использованием PHP и использую MySQL в качестве базы данных.Я пытаюсь понять использование подготовленных заявлений и просто делаю свои первые шаги.

Насколько я понимаю, подготовленные операторы предназначены главным образом для:

  1. Повышение эффективности запроса (предварительный анализ, план выполнения в кэше, передача двоичных данных между клиентом исервер)

  2. Обеспечение защиты от атак внедрения кода (не совсем ясно, но я думаю, что у меня есть базовые знания)

(можетесли есть и другие применения)

Вопрос в том,

почему бы просто не использовать оператор PREPARE, который предоставляет MySQL, и делать подготовленные операторы заранее, а затем использовать их в своем PHP-приложении,или PDO или mysqli?А еще лучше сделать хранимые процедуры, используя эти подготовленные операторы, и предоставлять их только программистам PHP?

Таким образом, фактическое бремя выполнения правильных запросов разделяется / обрабатывается программистом базы данных.Программист PHP может полностью сосредоточиться только на реализации и оптимизации приложений.

Я не предвижу каких-либо изменений в базе данных, которые я буду использовать в ближайшее время.MySQL отвечает всем требованиям.Но просто для того, чтобы поддерживать чистоту моего приложения и независимость от БД, я мог бы использовать PDO.Или придерживайтесь процедурного кодирования и выполняйте mysqli

Это действительный / проверенный и проверенный подход к созданию приложения?

Спасибо

1 Ответ

1 голос
/ 17 февраля 2011

Результат оператора PREPARE несколько особенный и не подлежит возврату пользователю. Вы можете использовать его, сохранив переменную в MySQL. Но это не стандартно. MySQL предоставляет вам API-интерфейсы, так что драйвер PDO использует их, и вы можете писать независимый от БД код. Я не вижу абсолютно никакой причины не делать этого. Среди многих вещей, использующих PDO, мне особенно нравятся DBTNG (слой Drupal 7 DB), потому что я участвовал в его написании :) и idiorm .

...