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

PHP与MySQLi搜索无结果问题:代码执行始终进入else分支

问题分析与修复方案

嘿,我一眼就瞅出你这段代码里的两个关键问题,正是它们导致搜索一直走else分支、没返回结果:

  • SQL语句中的变量引用错误
    你现在的SQL里写的是LIKE '%user_query%',这里的user_query是硬编码的字符串,数据库会去查找包含"user_query"这几个字符的内容,而不是用户实际输入的搜索词!你应该把它替换成之前转义好的$search变量,也就是写成LIKE '%$search%',这样才能把用户输入的内容代入查询。

  • mysqli_fetch_assoc的参数用错了
    你写的mysqli_fetch_assoc($queryResult)是错的——$queryResult是mysqli_num_rows($run)返回的行数(整数),而mysqli_fetch_assoc需要的是查询返回的结果集对象,也就是$run这个变量。所以这里得改成mysqli_fetch_assoc($run)。

下面是修正后的完整代码:

<?php 
if(isset($_POST['search'])){ 
    $search = mysqli_real_escape_string($connection, $_POST['user_query']); 
    $sql = "SELECT * FROM search WHERE search_title LIKE '%$search%' OR search_desc LIKE '%$search%' OR search_key LIKE '%$search%' "; 
    $run = mysqli_query($connection, $sql); 
    $queryResult = mysqli_num_rows($run); 
    if($queryResult > 0){ 
        while($rel_rows = mysqli_fetch_assoc($run)){ 
            echo "<div id='post'> 
                    <a href='#'><img src='$rel_rows[search_img]'></a> 
                    <a href='#'><h4 class='post_name'>$rel_rows[search_title]</h4></a> 
                    <p class='post_info'> $rel_rows[search_desc]</p> 
                  </div>"; 
        } 
    } else{ 
        echo "There are no results for your search"; 
    } 
} 
?>

另外提个小建议:以后可以用var_dump($sql)输出一下生成的SQL语句,就能很直观地看到问题所在啦~

内容的提问来源于stack exchange,提问作者yoshik karnawat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:13:55