为什么这个sql没有注入
Why is this sql not injected
我有这个 HTML 表格:
<form method="post" action="display.php">
Enter First Name:<input type="name" name="fname"><br><br>
<input type="submit" value="Show details" name="submit">
</form>
我有这个 SQL 查询
$fname=$_POST['fname'];
$db = new mysqli("localhost", "root", "","school");
$sql= "SELECT * FROM class1 where fname=$fname";
//print_r($sql);
if($db->query($sql)) {
echo "Success query!";
} else {
echo "Error occurred!";
}
我在这里练习SQL注射。我试过这个: roger; DROP TABLE class1;--
但它没有成功。即使输入中的 roger OR 1=1
也不起作用。
mysqli::query()
不会执行多个查询。您必须使用 $db->multi_query($sql)
并且它将接受由 ;
.
分隔的多个查询
此外,如果输入是 roger or 1=1
,您将收到错误消息,因为 table 没有名为 roger
的列。输入需要有引号:'roger' or 1=1
.
我有这个 HTML 表格:
<form method="post" action="display.php">
Enter First Name:<input type="name" name="fname"><br><br>
<input type="submit" value="Show details" name="submit">
</form>
我有这个 SQL 查询
$fname=$_POST['fname'];
$db = new mysqli("localhost", "root", "","school");
$sql= "SELECT * FROM class1 where fname=$fname";
//print_r($sql);
if($db->query($sql)) {
echo "Success query!";
} else {
echo "Error occurred!";
}
我在这里练习SQL注射。我试过这个: roger; DROP TABLE class1;--
但它没有成功。即使输入中的 roger OR 1=1
也不起作用。
mysqli::query()
不会执行多个查询。您必须使用 $db->multi_query($sql)
并且它将接受由 ;
.
此外,如果输入是 roger or 1=1
,您将收到错误消息,因为 table 没有名为 roger
的列。输入需要有引号:'roger' or 1=1
.