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

使用PHP将最近3条浏览车辆记录存储到数据库的实现方法

PHP实现用户车辆浏览记录仅保留最新3条方案

前置说明

原表默认缺少用户唯一标识字段(如user_id),无法区分不同用户的浏览记录,建议先新增该字段,以下方案默认按多用户场景实现,单用户场景直接去掉user_id相关判断即可。本方案完全采用if-else分支逻辑实现,不会产生冗余写入,无需新增后删除旧数据。


核心实现步骤

1. 基础参数准备

// 实际业务中替换为当前登录用户的唯一ID
$userId = 10086;
// 接收当前用户浏览的车辆ID,按实际业务传参方式调整
$vehicleId = $_REQUEST['vehicle_id'];
// 生成符合格式的当前时间,与示例时间格式对齐
$currentTimestamp = date('y-m-d H:i');

2. 预查询用户现有浏览记录数据

采用PDO做数据库操作示例,MySQLi逻辑一致可自行调整语法:

// 第一步:判断当前用户是否已经浏览过该车辆,避免重复存储
$existCheckStmt = $pdo->prepare("SELECT id FROM 你的表名 WHERE user_id = ? AND VehicleId = ? LIMIT 1");
$existCheckStmt->execute([$userId, $vehicleId]);
if ($existCheckStmt->rowCount() > 0) {
    // 已存在该车辆的浏览记录,直接更新时间为最新即可,无需修改其他记录
    $updateTimeStmt = $pdo->prepare("UPDATE 你的表名 SET timestamp = ? WHERE user_id = ? AND VehicleId = ?");
    $updateTimeStmt->execute([$currentTimestamp, $userId, $vehicleId]);
    return; // 直接结束后续逻辑
}

// 第二步:查询当前用户总浏览记录数,以及最早的那条记录ID
$countStmt = $pdo->prepare("SELECT COUNT(*) as total FROM 你的表名 WHERE user_id = ?");
$countStmt->execute([$userId]);
$recordTotal = $countStmt->fetch(PDO::FETCH_ASSOC)['total'];

$oldestStmt = $pdo->prepare("SELECT id FROM 你的表名 WHERE user_id = ? ORDER BY timestamp ASC LIMIT 1");
$oldestStmt->execute([$userId]);
$oldestRecordId = $oldestStmt->fetch(PDO::FETCH_ASSOC)['id'];

3. if-else分支执行写入/覆盖操作

if ($recordTotal < 3) {
    // 分支1:当前记录数不足3条,直接插入新记录
    $insertStmt = $pdo->prepare("INSERT INTO 你的表名 (user_id, timestamp, VehicleId) VALUES (?, ?, ?)");
    $insertStmt->execute([$userId, $currentTimestamp, $vehicleId]);
} else {
    // 分支2:当前记录数已满3条,覆盖最早的那条记录
    $coverStmt = $pdo->prepare("UPDATE 你的表名 SET timestamp = ?, VehicleId = ? WHERE id = ?");
    $coverStmt->execute([$currentTimestamp, $vehicleId, $oldestRecordId]);
}

注意事项

  • 示例中给出的时间如23-09-21 24:32属于非法时间,实际用PHP内置时间函数生成不会出现该问题
  • 可在user_id、VehicleId字段上加联合索引,提升查询性能
  • 若业务允许重复存储同车辆的浏览记录,可删除重复浏览判断的逻辑,直接走后面的数量判断分支即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:45:04