Подготовленные операторы MySQL PHP PDO — проблемы производительности и безопасности

Я подумываю переписать какое-нибудь приложение с открытым исходным кодом для моих целей на PDO и транзакции с использованием InnoDB (сейчас mysql_query и MyISAM).

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

Потому что везде, где я читаю, утверждается (даже во многих сообщениях здесь), что я должен использовать подготовленные операторы каждый раз и везде из-за 1. безопасности и 2. производительности. Даже руководство по PHP рекомендует использовать подготовленные операторы и не упоминать об экранировании.

Вы не можете отрицать механизм безопасности. Но, думая об этом снова и снова, приходит на ум, что каждый раз нужно готовить оператор, а затем использовать его один раз... Это не имеет смысла. Хотя приходится вставлять 1000 раз некоторые переменные в один оператор, это имеет смысл, но это очевидно. Но это не то, на чем строится обычный интернет-магазин или доска объявлений.

Так как же это преодолеть? Могу ли я подготовить свои заявления для всего приложения и назвать их конкретно? Могу ли я подготовить несколько разных заявлений и использовать их по имени? Потому что это единственное разумное решение, о котором я думаю (кроме 1000x).

Я обнаружил, что есть mysql_real_escape с именем $pdo->quote, а также для целей одиночного запроса. Почему бы не использовать это? Зачем заморачиваться с подготовкой?

А что вы думаете об этой прекрасной статье? http://блог.ulf-wendel.de/2008/pdo_mysqlnd-prepared-statements-again/

Согласны ли вы с накладными расходами, связанными с подготовкой операторов?

Спасибо

7
задан nemozny 2 June 2012 в 15:32
поделиться