这是我的剧本
<?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开始。
答案 0 :(得分:1)
替换此
$id = 1;
通过
$id = 0;
或替换此
SELECT * FROM records WHERE id > ?
通过
SELECT * FROM records WHERE id >= ?
^--//-will look for id equal to 1 or bigger
答案 1 :(得分:0)
为什么不将查询更改为
编辑:在删除记录时,查询无效。
$stmt_1 = $conn->prepare("SELECT * FROM records WHERE id = ?");
$stmt_1->bindValue(1,$id +1);
$stmt_1->execute();
因此,您将获得下一个最高ID的记录。
只是提示优化您的查询。 还有一个问题是你在表定义中使用auto_increment。如果你这样做,你应该记住,这个mysql序列从1开始计算主键
希望有所帮助