Несколько вопросов о PDO и подготовленных заявлениях - PullRequest
2 голосов
/ 16 февраля 2011

Я начинаю использовать PDO и готовые заявления в своих приложениях, но у меня есть несколько вопросов к профессионалам.Надеюсь, вы можете помочь мне!:)

  1. Когда я должен использовать подготовленные заявления?Каждый запрос во всем моем приложении?
  2. Могу ли я использовать подготовленные операторы с INSERT?
  3. Можно ли использовать подготовленные операторы с переменными столбцами в моем INSERT?
  4. Насколько быстрее подготовленные операторыявляются (при использовании SELECT или INSERT)
  5. Могу ли я использовать подготовленные операторы с UPDATE?
  6. Почему я должен их использовать, кроме повышения скорости и безопасности?

Ответы [ 2 ]

7 голосов
/ 16 февраля 2011

Когда я должен использовать подготовленные заявления? Каждый запрос во всем моем приложении?

Да. Используйте их везде. Есть несколько крайних случаев, когда вам все еще нужен объединенный SQL и экранирование значений. Связанные параметры не могут заменить конструкцию динамического SQL.

Могу ли я использовать подготовленные выписки с INSERT?

Да. INSERT INTO tbl (x,y,z) VALUES (?,?,?)

Могу ли я использовать подготовленные операторы с переменными столбцами в моем INSERT?

Да. Но имена столбцов не могут быть связанными параметрами. Для построения динамических операторов INSERT требуется фильтр и / или экранирующая функция.

Насколько быстрее подготовлены операторы (при использовании SELECT или INSERT)

Нет общего ответа.

Увеличение скорости происходит, если вы перебираете массивы данных и повторно используете подготовленный оператор для вставки. Обычные запросы: зависит. Проверь себя.

Могу ли я использовать подготовленные операторы с UPDATE?

Да. UPDATE tbl SET x = ? AND y = ? WHERE z = ?

Почему я должен их использовать, кроме повышения скорости и безопасности?

Делает запросы SQL более читабельными.

2 голосов
/ 16 февраля 2011

Когда я должен использовать подготовленные заявления? Каждый запрос во всем моем приложении?

Конечно, ДА, иначе все будет напрасно и бессмысленно.

Могу ли я использовать подготовленные выписки с INSERT?

Как вы думаете? Будет ли когда-нибудь смысл, если вы не можете? «Мы сделали для вас отличную броню, но она защищает только одну сторону»?

Могу ли я использовать подготовленные операторы с переменными столбцами в моей вставке?

Вы можете добавить переменное количество заполнителей!

Насколько быстрее подготовлены операторы (при использовании SELECT или INSERT)

вы никогда не заметите.

Могу ли я использовать подготовленные выписки с UPDATE?

Комментариев нет.

Почему я должен их использовать, кроме повышения скорости и безопасности?

Ну, причина точно такая же, как и для магических цитат - она ​​позволяет сделать более безопасное приложение для тех, кто не имеет ни малейшего понятия. Вот и все.

...