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

如何在HTML表格中显示指定用户各日期的首次与末次时间日志?

问题解决:用户时间日志2023年4月7日数据不显示

1. 先确认数据库原始数据

直接在数据库执行查询,验证2023-04-07是否存在目标用户的日志记录:

SELECT * FROM tbl_timelog WHERE DATE(log_time) = '2023-04-07' AND user_id = [你的目标用户ID];
  • 如果无返回结果:说明数据库本身没有该日期的日志,需补录数据。
  • 如果有返回结果:继续排查代码逻辑。

2. 修正SQL查询逻辑

常见问题是日期分组或字段处理错误,确保查询能正确按日期聚合首次/末次日志:

$sql = "SELECT 
            user_id,
            DATE(log_time) AS log_date,
            MIN(log_time) AS first_log,
            MAX(log_time) AS last_log
        FROM tbl_timelog
        WHERE user_id = ?
        GROUP BY user_id, DATE(log_time)
        ORDER BY log_date DESC;";
  • 注意log_time必须是datetime或timestamp类型,避免因字段类型错误导致日期识别偏差。
  • 若服务器存在时区问题,需在查询前设置时区,比如SET time_zone = '+08:00';(根据实际时区调整)。

3. 检查PHP日期处理代码

如果SQL能返回4月7日数据,但页面不显示,大概率是日期转换逻辑出错:

  • 避免对DATE()返回的日期字符串重复转换,直接使用查询结果:
// 正确示例
while($row = mysqli_fetch_assoc($result)){
    echo "<tr>";
    echo "<td>" . $row['log_date'] . "</td>";
    echo "<td>" . date('H:i:s', strtotime($row['first_log'])) . "</td>";
    echo "<td>" . date('H:i:s', strtotime($row['last_log'])) . "</td>";
    echo "</tr>";
}
  • 不要用if(empty($row['first_log']))这类判断,凌晨0点的日志会被误判为空值。

4. 调试输出验证数据

在PHP代码中添加调试语句,确认查询结果是否包含4月7日数据:

// 执行查询后打印所有结果
$result = mysqli_query($conn, $sql);
var_dump(mysqli_fetch_all($result, MYSQLI_ASSOC));

通过调试输出快速定位:是数据库未返回数据,还是HTML渲染时遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:42:14