【发布时间】:2013-07-07 07:36:18
【问题描述】:
我正在查询一个 mysql 数据库表,首先创建一个临时表并用 select 语句中的数据填充它。
为了测试它,我使用一个已知的数据库 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 记录错误,因为它说以前的记录是当前记录。
我之前的查询是不是错了?
【问题讨论】:
-
对剩下的问题不做评论,但你应该使用绑定参数。
-
get_previous - 其中 id
current_id。检查记录是否存在