Как подготовленные операторы php pdo предотвращают инъекцию sql
Вместо того, чтобы раздражать придиркой к этому вопросу, я дам вам ответ на реальный вопрос: prepare
если запрос по существу выполняет mysql_real_esape_string
или некоторый эквивалент на каждом токене (представлен знаком вопроса или * 1005) *). Это позволяет убедиться, что все переменные данные правильно экранированы. Это не предотвращает все проблемы безопасности (например, %
и _
не экранированы, что может повлиять на предложения LIKE
).
Каковы другие плюсы / минусы использования PDO?
Насколько я знаю, нет никаких минусов в использовании PDO
. Я предполагаю, что недостатком является то, что он не поддерживает все известные БД. Есть ограниченные драйверы, но это только недостаток, если вы хотите использовать PDO для БД, которую он не может поддерживать. Плюсы? Что ж, вы получаете большую гибкость от PDO, особенно если вы создаете для него оболочку (на всякий случай, если вам нужно переключить администраторов баз данных), и, поскольку она скомпилирована в C, она предположительно быстрее, чем при использовании других функций php (см. Ниже). Это также избавляет вас от необходимости писать собственные методы для подготовки запросов и т. Д.
Снижает ли использование PDO эффективность
Снизить эффективность по сравнению с чем? Какая эффективность? Эффективность программирования или скорость исполнения? Насколько я понимаю, PDO скомпилирован, поэтому его использование должно быть на быстрее , чем создание собственной оболочки БД для подготовки запросов и тому подобного. Если это действительно проблема, вы можете сравнить разницу, но я предлагаю вам сначала поискать замедления в других местах.