【问题标题】:MySQL next previous record issueMySQL下一个上一个记录问题
【发布时间】:2013-07-29 17:29:40
【问题描述】:

这是我的脚本

 <?php

 if(isset($_GET['id']))
 {
    $id = $_GET['id'];
}
else
{
    $id = 1;
}

    $random = $conn->query("SELECT * FROM records ORDER BY RAND()");
    $row = $random->fetch();

    $stmt_1 = $conn->prepare("SELECT * FROM records WHERE id > ? ORDER BY id ASC LIMIT 1");
    $stmt_1->bindValue(1,$id);
    $stmt_1->execute();
    $stmt_1->setFetchMode(PDO::FETCH_ASSOC);
    $row = $stmt_1->fetch();
    $id = $row['id'];

    $stmt_1 = $conn->prepare("SELECT * FROM records WHERE id < ? ORDER BY id DSC LIMIT 1");
    $stmt_1->bindValue(1,$id);
    $stmt_1->execute();
    $stmt_1->setFetchMode(PDO::FETCH_ASSOC);
    $row = $stmt_1->fetch();
    $id = $row['id'];

    ?>

但我有一个问题。例如我在数据库中有 4 条记录:

ID String
1  Test-1
2  Test-2
3  Test-3
4  Test-4

查询工作正常,它给了我下一条记录,但不是我放的 id,如果我放 id=1 返回 id 2 或 id=2 返回 id 3 的信息,结果不准确。所以我的问题是我应该怎么做才能返回正确的结果而不是+1。我知道它从 0 开始计数,我想在我的脚本中修复它,我想让它从 1 开始。

【问题讨论】:

    标签: php mysql pdo next


    【解决方案1】:

    替换这个

       $id = 1;
    

       $id = 0;
    

    或者替换这个

        SELECT * FROM records WHERE id > ?
    

    通过

       SELECT * FROM records WHERE id >= ?
                                       ^--//-will look for id equal to 1 or bigger
    

    【讨论】:

    • 非常感谢,现在它可以正常工作了,但是我的超链接 Next 现在不能工作了。 ..
    • 在您的超链接中您希望 id 是什么?相同的 id 还是 id+1 ?
    • 它解决了你的哪个解决方案?第一个还是第二个?最好使用第二种解决方案。如果您在超链接中使用 id
    • 在你帮助我之前使用我的旧代码,这个超链接正在更改 id +1 现在它不能。此超链接用于下一条记录,它从中获取 id:$id = $row['id']; - $stmt_1 所以它可以去 id+1。
    • 是的,我会使用第二个。
    【解决方案2】:

    你为什么不把你的查询改成

    编辑:由于记录被删除,查询将不起作用。

    $stmt_1 = $conn->prepare("SELECT * FROM records WHERE id = ?");
    $stmt_1->bindValue(1,$id +1);
    $stmt_1->execute();
    

    因此您将获得具有下一个最高 id 的记录。

    只是优化查询的提示。 还有一个问题,您是否在表定义中使用了 auto_increment。如果你这样做了,你要记住这个 mysql-sequence 从一个开始计算主键

    希望对你有帮助

    【讨论】:

    • 感谢您的提示。是的 ID 是 A_I 但我不认为 $stmt_1->bindValue(1,$id +1);我会得到下一个可能的记录如果下一个 id 被删除怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 2021-04-06
    相关资源
    最近更新 更多