Какие параметризованные запросы объясняются простым английским языком?

StackOverflow https://stackoverflow.com/questions/4906421

Вопрос

Может ли кто-нибудь объяснить мне простым английским языком, что такое параметризованные запросы и как реализовать их в PHP для базы данных MySQL, чтобы избежать SQL-инъекций?

Это было полезно?

Решение

Раздел подготовленных операторов и хранимых процедур PHP Руководство, хотя оно относится конкретно к PDO, хорошо освещает это, когда говорит:

<цитата>

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

  • Запрос нужно только проанализировать (или подготовлен) один раз, но может быть выполнен несколько раз с одним и тем же или разные параметры. Когда запрос подготовлен, база данных будет анализировать, компилировать и оптимизировать его план выполнения запроса. За сложные запросы, которые этот процесс может принять достаточно времени, чтобы заметно замедлить приложение, если есть нужно повторить один и тот же запрос много раз с разными параметрами. К используя подготовленное заявление приложение избегает повторения анализировать / компилировать / оптимизировать цикл. Этот означает, что подготовленные операторы используют меньше ресурсов и, следовательно, работать быстрее.

  • Параметры подготовленных операторов не нужно цитировать; водитель автоматически обрабатывает это. Если приложение использует исключительно подготовленные заявления, разработчик может быть уверен что никакой SQL-инъекции не произойдет (однако, если другие части запрос строится с неэкранированный ввод, SQL-инъекция еще возможно).

Если вам нужен конкретный пример того, как их использовать, на указанной выше странице также есть образцы кода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top