2014-09-06 27 views
-1

嗯,我发现这个简单的脚本在线某处选择下一行并选择前一行。选择可用的前一行不工作mysql php

This Works。 (下一页)

$currentid = $_GET['id']; 
$nextquery= mysqli_query($conDB,"SELECT * FROM vids WHERE ID > $currentid ORDER BY ID ASC LIMIT 1")or die (mysqli_error($conDB)); 

但是,这dosent,它返回当前页id而不是以前的id。
我想要的是它获取数据库上最后一个可用的ID。

$prevquery= mysqli_query($conDB,"SELECT * FROM vids WHERE ID < $currentid ORDER BY ID desc LIMIT 1")or die (mysqli_error($conDB)); 

请别人帮助我,我将不胜感激! :d
问候丹尼尔

+0

你有错别字:改变'$ currrentid = $ _GET = ['id'];'to'$ currentid = $ _GET ['id'];' - 再加上这是你在这里试图做的坏事。想象一下你的'$ _GET = ['id']'是插入到数据库中的最后一个id--那么你的查询将不会返回任何内容。 – 2014-09-06 20:11:03

+0

对不起,我在这里写错了。但它仍然显示在我的页面上,但它仍然不工作_:/ – user3370305 2014-09-06 20:13:42

+0

你仍然没有改变你的其他错字:在这里删除“=”:'$ _GET = ['id'];' – 2014-09-06 20:17:28

回答

0

来查找字段“ID”从“西元”最大值表,你会想用下面的查询:

SELECT ID FROM vids ORDER BY ID DESC LIMIT 1 

要找到以前和旁边的表格中的行,您使用看起来是正确的查询,但似乎有在第一线错字计算$ currentid:

$currrentid = $_GET=['id']; 

此行应该是:

$currrentid = $_GET['id']; 
+0

起初,我一直在想你。然后我注意到他不想查找最大ID,他想找到相应的ID的下一个/ prev id。 – 2014-09-06 20:21:07

+0

YESSS !!! :D这就是我试图编码。 ! :D – user3370305 2014-09-06 20:22:28

0

前一个查询删除DESC

+0

我刚刚尝试过,但现在它转到表格的第一个ID。 我希望它在ID即时之前转到ID。 – user3370305 2014-09-06 20:20:14

+0

@ user3370305是的,那个答案没有意义。 – 2014-09-06 20:20:40

0

“我要的是它获得了最后一个可用的ID在数据库上。”

`SELECT MAX(ID) FROM table_name;` 

会给你表中的最后一条记录ID。

下一页:

select * from table_name where ID = (select min(ID) from table_name where ID > $_GET['id']) 

上一页:

select * from table_name where ID = (select max(ID) from table_name where ID < $_GET['id']) 

或者你可以优化查询,并拥有这一切在一个呼叫完成:

select * from table_name where ( 
     ID = IFNULL((select min(ID) from table_name where ID > $_GET['id']),0) 
     or ID = IFNULL((select max(ID) from table_name where ID < $_GET['id']),0) 
)