首页 > 解决方案 > 网页(用于搜索项目)在数据库中具有项目的默认结果

问题描述

我正在制作一个“购物网页”只是为了测试 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代码-->

标签: phpmysql

解决方案


由于以下行,您只得到一件物品

$output = '<div> '.$name.' '.$price.' '.$stock.' </div>';

上面的行覆盖了之前的值。因此,将其替换为以下内容:

$output .= '<div> '.$name.' '.$price.' '.$stock.' </div>';(观察变量名后的点)。

上面的行将连接每个项目。希望这可以帮助。


推荐阅读