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

如何获取当前ID的上一个有效ID(适配ID跳号场景)

解决方案

你的问题出在SQL语句没有对结果进行排序,默认查询返回的结果是按数据插入顺序排列的,mysqli_fetch_assoc只会取第一条,而不是你需要的小于当前ID的最大有效ID。

修正后的SQL语句

修改查询逻辑,通过ORDER BY id DESC将结果按ID倒序排列,再用LIMIT 1只取最大的那个符合条件的ID:

$sql3 = "SELECT id FROM videos WHERE temporada = $idTemporada AND id < $id ORDER BY id DESC LIMIT 1";
$res3 = mysqli_query($conn, $sql3);
$ant_cap = mysqli_fetch_assoc($res3);

// 处理无结果的情况(比如当前是该季第一个ID)
if ($ant_cap) {
    echo $ant_cap['id'];
} else {
    echo "无上一个有效ID";
}

更安全的写法(避免SQL注入)

直接拼接变量到SQL语句存在注入风险,建议使用预处理语句:

$stmt = $conn->prepare("SELECT id FROM videos WHERE temporada = ? AND id < ? ORDER BY id DESC LIMIT 1");
$stmt->bind_param("ii", $idTemporada, $id);
$stmt->execute();
$result = $stmt->get_result();
$ant_cap = $result->fetch_assoc();

if ($ant_cap) {
    echo $ant_cap['id'];
} else {
    echo "无上一个有效ID";
}
$stmt->close();

这样就能准确获取到当前ID对应的上一个有效ID,同时避免了SQL注入的安全问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:45:36