Представьте себе запрос, построенный с использованием конкатенации строк:
"select * from myTable where id = '" + txtIdEnteredByUser +"'"
Если конечный пользователь вводит:
' or 1=1; --
, тогда запрос становится:
select * from myTable where id = '' or 1=1; --'
Это действительный запрос, который всегда оценивается как истинный из-за (ИЛИ 1 = 1), в результате возвращаются все значения таблицы.
Однако, если пользовательский ввод был:
or 1=1;
запрос становится:
select * from myTable where id = ' or 1=1;'
, который является запросом, который не будет возвращать что-либо (вероятно).