Что такое параметризованный запрос?

Что такое параметризованный запрос, и каким будет пример такого запроса в PHP и MySQL?

4 ответов


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

вы можете прочитать больше об этом на PHP PDO страница (PDO является слоем абстракции базы данных), хотя вы также можете используйте их, если вы используете интерфейс базы данных mysqli (см. готовить документации).


Это четкое и сжатое объяснение того, что это такое, и как это работает. Как и почему использовать параметризацию

Essential процесс включает в себя предварительную обработку сервером запроса без параметров, чтобы он знал тип запроса. Так, например, запрос SELECT является только запросом SELECT и не может быть объединен параметром(переменной запроса), чтобы быть SELECT / DROP или какой-либо другой инъекцией MySql. Вместо этого данные инъекции будут просто строковыми данными в поле "параметр".


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

система баз данных может выполнять один и тот же оператор SQL без выполнения синтаксического анализа, компиляции и оптимизации снова и снова для одного и того же оператора SQL.

вы можете написать или создать подготовленный оператор в MySQL, но это не эффективный способ, потому что двоичный протокол через подготовленный API оператора лучше.

но все же вы можете писать, и даже это не требует никакого другого программирования, которое вы можете напрямую написать в SQL. Вы можете использовать подготовленный оператор для клиентской программы MySQL.Можно также использовать подготовленный оператор в хранимой процедуре для динамического подхода SQL.

создать подготовленный оператор в MySQL:ссылка взята из этого статья

PREPARE TestStmt FROM 
'SELECT * FROM Test 
WHERE TestNumber=?';

вы можете использовать PHP-код для управления подготовленным оператором через его API или управлять на уровне JDBC.


запрос-это запрос, в котором используются заполнители для параметров и значения параметров, которые передаются во время выполнения.

зачем использовать параметризованный запрос

  1. наиболее важной причиной использования параметризованных запросов является предотвращение атак SQL-инъекций.
  2. во-вторых параметризованный запрос заботится о сценарии, где sql-запрос может завершиться неудачей, например, для вставки O'Baily в поле. Параметризованный запрос handels такие запрос без необходимости замены одинарных кавычек двойными одинарными кавычками.