我正在制作一个“购物网页”只是为了测试SQL注入(我试图模拟Computerphile的“ SQL注入”视频中显示的网页)。搜索数据不是问题,但是默认结果(当我刷新页面时)是数据库中的一项,而不是什么。你能帮助我吗?当我有两个与该搜索查询匹配的项目时,也只有一个项目出现。
一切对我来说在php上都是新的。我看过很多Youtube教程,并尝试制作新的网站代码,只是为了检查我选的教程是否正确。但是对我来说真的没有任何作用。
<?php
$conn = mysqli_connect("localhost", "root", "") or die("Could not
connect");
mysqli_select_db($conn, "search_products") or die("Could not find the
database");
$output = '';
$count = 0;
if (isset($_POST['searchq']))
{
$search_query = $_POST['searchq'];
$query = mysqli_query($conn, "SELECT * FROM products WHERE name LIKE
'%$search_query%'")
or die("Could not search for the query");
$count = mysqli_num_rows($query);
if ($count == 0)
{
$output = 'No Results';
}
else
{
while ($row = mysqli_fetch_array($query)) {
$name = $row['name'];
$price = $row['price'];
$stock = $row['instock'];
$output = '<div> '.$name.' '.$price.' '.$stock.' </div>';
}
}
}
?>
<-这是我的php代码->
答案 0 :(得分:0)
更改以下内容以查看是否有帮助
if (isset($_POST['searchq']))
至if (isset($_POST['searchq']) && !empty($_POST['searchq']))
$ output应该使用“。=”而不是“ =”,您只需将新输出替换为旧输出即可。您应该弄虚作假才能得到所有结果。
答案 1 :(得分:0)
由于下面一行,您只得到一项
$output = '<div> '.$name.' '.$price.' '.$stock.' </div>';
以上行覆盖了先前的值。因此,将其替换为以下内容:
$output .= '<div> '.$name.' '.$price.' '.$stock.' </div>';
(观察变量名后的点)。
上面的行将连接每个项目。希望这会有所帮助。