我通过首先创建一个临时表并用 select 语句中的数据填充它来查询 mysql 数据库表。
为了测试它,我使用了一个已知的数据库 id 并测试它是否正确获取下一个和上一个记录。
这是我的功能
function get_next($id){
$db = new PDO('mysql:host=localhost;dbname=world', 'root', '');
$db->query("CREATE TEMPORARY TABLE nr AS SELECT ID,Name,Population FROM city WHERE id > $id ORDER BY ID LIMIT 1;");
$orm = $db->query("SELECT * FROM nr WHERE ID > $id ORDER BY ID LIMIT 1;");
$id = $orm->fetchColumn(0);
if ($id !== false) {
return $id;
}
}
function get_previous($id){
$db = new PDO('mysql:host=localhost;dbname=world', 'root', '');
$db->query("CREATE TEMPORARY TABLE pr AS SELECT ID,Name,Population FROM city WHERE ID > $id ORDER BY ID LIMIT 1;");
$orm = $db->query("SELECT * FROM pr WHERE ID < $id ORDER BY ID DESC LIMIT 1;");
$id = $orm->fetchColumn(0);
if ($id !== false) {
return $id;
}
}
我可以next
正确获取记录,但previous
记录错误,因为它说以前的记录是当前记录。
我在做之前的查询错了吗?