MYSQL - 按ID获取下一个和上一个记录 - HTML用于超链接

时间:2012-06-25 18:11:47

标签: php mysql html variables hyperlink

所以我试图通过添加下一个和上一个链接来为CRUD添加一些便利,以便在我的数据库中的记录之间导航。

以下是我的疑问:

$id=$_GET['id'];
$id = $currentid;
$prevquery= "SELECT * FROM inventory WHERE id < $currentid ORDER BY id DESC LIMIT 1"; 
$prevresult = mysql_query($prevquery);

$nextquery= "SELECT * FROM inventory WHERE id > $currentid ORDER BY id ASC LIMIT 1"; 
$nextresult = mysql_query($nextquery);
?>

这是我的HTML:

<a href="http://www.url.com/crud/edit.php?id=<?php echo $prevresult; ?> ">Previous</a>

<a href="http://www.url.com/crud/edit.php?id=<?php echo $nextresult; ?> ">Next</a>

现在我在PHPMyAdmin中测试了这些查询并且他们产生了我想要的结果,但是我无法获得实际提供正确ID的超链接......在=之后它们只是空白。我做错了什么?

4 个答案:

答案 0 :(得分:10)

mysql_query()返回结果集(资源)。要从结果集中获取实际行,您需要使用类似mysql_fetch_row()的函数。

“下一个”链接的代码看起来像

<强> PHP

$nextquery= "SELECT * FROM inventory WHERE id > $currentid ORDER BY id ASC LIMIT 1"; 
$nextresult = mysql_query($nextquery);
if(mysql_num_rows($nextresult) > 0)
{
    $nextrow = mysql_fetch_row($nextresult);
    $nextid  = $nextrow['id'];
}

<强> HTML

<a href="http://www.url.com/crud/edit.php?id=<?php echo $nextid; ?> ">Next</a>

以前的链接也是类似的。

强制性说明 对于新代码,您应该认真考虑使用PDO

高级笔记: 您可以将查询合并到一个查询中,如:

SELECT
  (
    SELECT id
    FROM inventory WHERE id < $currentid ORDER BY id DESC LIMIT 1
  ) AS previd,
  (
    SELECT id
    FROM inventory WHERE id > $currentid ORDER BY id ASC LIMIT 1
  ) AS nextid

然后相应地调整逻辑。

答案 1 :(得分:0)

好的,花了一点点但我想出来了......

<强> PHP

$prevquery= "SELECT * FROM inventory WHERE id < $currentid ORDER BY id DESC LIMIT 1"; 
$prevresult = mysql_query($prevquery) or die(mysql_error());
while($prevrow = mysql_fetch_array($prevresult))
{
$previd  = $prevrow['id'];
}

$nextquery= "SELECT * FROM inventory WHERE id > $currentid ORDER BY id ASC LIMIT 1"; 
$nextresult = mysql_query($nextquery) or die(mysql_error());
while($nextrow = mysql_fetch_array($nextresult))
{
$nextid  = $nextrow['id'];
}

<强> HTML

<a href="http://www.theantiquarium.com/crud/edit.php?id=<?php echo $previd; ?>">Previous</a>

<a href="http://www.theantiquarium.com/crud/edit.php?id=<?php echo $nextid; ?>">Next</a>

感谢您的帮助,我认为这让我走上了正确的道路。我将展望未来的PDO。我现在刚刚开始使用旧的MYSQL / PHP语法,现在突然之间出现了一种新的格式......很难跟上这一切!

答案 2 :(得分:0)

结果代码在表格的开头和结尾都有一个罪魁祸首。您的代码将在您订购时“死亡”。相反,您可以检查查询结果($ prevresult,$ nextresult)并决定不显示上一个或下一个项目的链接。

答案 3 :(得分:-2)

选择 IFNULL( (SELECT id FROM inventory WHERE id&lt; $ currentid ORDER BY id DESC LIMIT 1),(SELECT id FROM inventory ORDER BY id DESC LIMIT 1) )AS很普遍, IFNULL( (SELECT id FROM inventory WHERE id&gt; $ currentid ORDER BY id ASC LIMIT 1), (SELECT id FROM inventory ORDER BY id ASC LIMIT 1) )AS nextid

相关问题