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

从MySQL日志表查询指定表最大update_time时PHP代码报错求助

解决strtotime()参数类型错误的问题

嘿,我来帮你搞定这个报错!你遇到的strtotime() expects parameter 1 to be string, object given错误,根源很简单:$con->query()执行后返回的是一个MySQLi结果对象,不是直接的时间字符串,strtotime()自然没法处理对象类型的参数。

咱们一步步修正代码:

核心问题拆解

当你执行$con->query(...)时,MySQL返回的结果不会直接是你要的时间值,而是一个封装了查询结果的对象,你需要从这个对象里提取出实际的时间数据。

修正后的完整代码

<?php 
$con = mysqli_connect("localhost","root","","db"); 
// 检查连接是否成功
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    exit; // 连接失败直接终止,避免后续无效执行
}

// 给聚合结果起个别名,方便后续取值
$query = "SELECT MAX(update_time) AS max_update_time FROM log_tbls WHERE table_name = 'abc'";
$result = $con->query($query);

// 检查查询是否执行成功
if (!$result) {
    echo "Query failed: " . $con->error;
    exit;
}

// 从结果对象中取出一行数据
$row = $result->fetch_assoc();
// 获取最大时间,处理无匹配数据的情况
$maxUpdateTime = $row['max_update_time'] ?? null;

if ($maxUpdateTime) {
    // 因为update_time是timestamp类型,取出的已经是标准时间字符串,可直接转换
    $timestamp = strtotime($maxUpdateTime);
    echo date("Y-m-d H:i:s", $timestamp); 
} else {
    echo "No records found for table 'abc'";
}

// 释放结果集资源
$result->free();
// 关闭数据库连接
$con->close();
?>

额外注意事项

  • 给聚合结果起别名:用AS max_update_time给MAX(update_time)命名,后续取值时更清晰,避免因为匿名结果列导致的取值错误。
  • 错误处理:增加了查询失败的判断,以及无匹配数据的处理,避免程序遇到异常情况直接崩溃。
  • 资源释放:用完结果集后调用free()释放内存,最后关闭数据库连接,养成良好的编码习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:20:48