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

PHP数据过滤功能实现后表格信息未显示问题求助(附代码)

问题分析与修正方案

你遇到的表格无法正常显示的问题,核心是SQL查询语法错误导致数据库无法返回有效数据,同时代码结构也存在一些疏漏。我帮你一步步梳理并修正:

主要错误点

  • CONCAT函数语法错误:原代码里的CONCAT(employeeIDAND weekANDdayANDshift)写法完全不符合SQL规范,CONCAT的参数需要用逗号分隔,而且shift字段的反引号没闭合(少了一个)。
  • 无搜索条件时的SQL逻辑错误:WHERE employeeIDAND weekANDdayANDshift`` 这种写法毫无意义,WHERE子句需要的是判断条件,不是直接罗列字段,这里直接查询全表即可。
  • 代码执行顺序与函数缺失:$search_res= filterTable($query);的位置不对,且你没写完filterTable函数的核心逻辑,导致数据无法被正确处理。

修正后的完整代码示例

<?php
include_once '../dbconfig/DBConn.php';
$con = DBConn::getConnection();

// 完善数据过滤函数,添加错误处理
function filterTable($query, $dbConn) {
    $result = mysqli_query($dbConn, $query);
    // 捕获SQL查询失败的错误,方便排查问题
    if (!$result) {
        die("数据库查询出错: " . mysqli_error($dbConn));
    }
    return $result;
}

$search_res = null;
if(isset($_POST['search'])) {
    $valueToSearch = $_POST['valueToSearch'];
    // 修正CONCAT语法,闭合字段反引号,用逗号分隔参数,同时使用用户输入的搜索值
    $query = "SELECT * FROM `empavailability` WHERE CONCAT(`employeeID`, `week`, `day`, `shift`) LIKE '%$valueToSearch%'";
    $search_res = filterTable($query, $con);
} else {
    // 无搜索条件时直接查询全表,去掉错误的WHERE子句
    $query = "SELECT * FROM `empavailability`";
    $search_res = filterTable($query, $con);
}
?>

<!-- 表格显示的HTML结构 -->
<table border="1">
    <tr>
        <th>员工ID</th>
        <th>周数</th>
        <th>日期</th>
        <th>班次</th>
        <!-- 其他表头根据你的表结构补充 -->
    </tr>
    <?php
    // 循环输出查询结果,同时处理无数据的情况
    if($search_res && mysqli_num_rows($search_res) > 0) {
        while($row = mysqli_fetch_assoc($search_res)) {
            echo "<tr>";
            echo "<td>" . $row['employeeID'] . "</td>";
            echo "<td>" . $row['week'] . "</td>";
            echo "<td>" . $row['day'] . "</td>";
            echo "<td>" . $row['shift'] . "</td>";
            // 其他列根据表结构补充
            echo "</tr>";
        }
    } else {
        echo "<tr><td colspan='4'>没有找到匹配的数据</td></tr>";
    }
    // 释放结果集资源
    mysqli_free_result($search_res);
    // 关闭数据库连接
    mysqli_close($con);
    ?>
</table>

关键修正说明

  1. SQL语句规范:把CONCAT里的AND替换为逗号,闭合shift的反引号,同时将固定的%5改为用户输入的$valueToSearch,保证搜索功能的实用性。
  2. 函数完善:给filterTable函数传入数据库连接参数,添加错误捕获逻辑,方便你排查SQL执行时的问题。
  3. 表格输出优化:增加了无数据时的提示信息,规范了结果集的循环输出流程,同时补充了资源释放的代码,避免内存泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:54:58