$query = " SELECT * FROM wines WHERE variety = '";
2. 利用原本的固定不变的局部与包括用户提交的变量的值:
$query .= $variety;
3. 然后,你利用另外一个单引号来毗连此了局-描写该变量值的停止:
$ query .= "'";
因而,$query的值以下所示:
SELECT * FROM wines WHERE variety = 'lagrein' 这个机关的胜利依附用户的输出。在本文示例中,你正在利用单个单词(也多是一组单词)来指明一种葡萄酒类型。因而,该查询的构建是无任何成绩的,而且了局也会是你所希冀的-一个葡萄酒类型为"lagrein"的葡萄酒列表。如今,让咱们想象,既然你的用户不是输出一个复杂的类型为"lagrein"的葡萄酒类型,而是输出了以下内容(注重包含个中的两个标点符号):
lagrein' or 1=1;
如今,你持续利用后面固定的局部来机关你的查询(在此,咱们仅显示$query变量的了局值):
SELECT * FROM wines WHERE variety = '
然后,你利用包括用户输出内容的变量的值与之停止毗连(在此,以粗体显示):
SELECT * FROM wines WHERE variety = 'lagrein' or 1=1;
最初,添加高低面的下引号:
SELECT * FROM wines WHERE variety = 'lagrein' or 1=1;'