You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

简易搜索引擎无法输出数据库内容问题求助

解决你的搜索引擎无输出问题

我帮你排查出几个关键问题,都是代码里的低级错误,改完应该就能正常输出了:

  • 核心问题:用错了数据库连接对象
    你创建的数据库连接变量是$connect,但后面操作数据库时全程用的是$test——这个变量根本没定义过啊!比如$test->escape_string($_GET['name'])、$test->query(...),这相当于完全没调用正确的数据库连接,肯定查不到任何数据。把所有$test替换成$connect就解决了最根本的问题。

  • 重复创建数据库连接
    你先写了mysqli_connect("localhost", "root", '', "test");,接着又用new mysqli(...)新建了一个连接,这完全多余,留一个就行。建议保留面向对象的写法,还得加上连接错误检查,不然连不上数据库你都不知道:

    $connect = new mysqli("localhost", "root", "", "test");
    $connect->set_charset("utf8");
    // 检查连接是否成功
    if ($connect->connect_error) {
        die("数据库连接失败: " . $connect->connect_error);
    }
    
  • SQL语句的LIKE语法写错了
    你写的LIKE '%[$name]%'是在匹配包含[$name]字面内容的记录,而不是匹配包含用户输入关键词的记录,把方括号去掉,改成%{$name}%才对:

    $query = $connect->query("SELECT name, price FROM tbl_product WHERE name LIKE '%{$name}%' OR price LIKE '%{$name}%'");
    
  • 加上查询错误检查
    现在代码里没判断查询是否执行失败,万一SQL写错了也没法排查,建议加上:

    if (!$query) {
        die("查询执行失败: " . $connect->error);
    }
    
  • 额外提醒:用预处理语句防SQL注入
    直接把用户输入拼进SQL里有安全风险,推荐用mysqli的预处理语句,既安全又能避免语法问题:

    if(isset($_GET['name'])) {
        $keyword = "%".$_GET['name']."%";
        $stmt = $connect->prepare("SELECT name, price FROM tbl_product WHERE name LIKE ? OR price LIKE ?");
        $stmt->bind_param("ss", $keyword, $keyword);
        $stmt->execute();
        $result = $stmt->get_result();
    ?>
    <div class="result-count">
        Fandt <?php echo $result->num_rows; ?> resultater.
    </div>
    <?php
        if($result->num_rows) {
            while ($r = $result->fetch_object()) {
    ?>
            <div class="result">
                <a href="#"><?php echo $r->name; ?></a>
            </div>
    <?php
            }
        }
    }
    

最后再确认下你的数据库表名确实是tbl_product,字段name和price和结构一致,这些没问题的话,改完代码应该就能正常输出搜索结果了。

内容的提问来源于stack exchange,提问作者Emil Malling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:15:12