4

因此,我试图通过添加下一个和上一个链接来在我的数据库中的记录之间导航,从而为 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

4 回答 4

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

然后相应地调整逻辑。

于 2012-06-25T18:13:02.763 回答
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 语法,现在突然出现了一种新格式……很难跟上这一切!

于 2012-06-25T19:52:53.853 回答
0

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

于 2013-10-23T00:25:52.257 回答
-2

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

于 2015-10-23T07:06:47.330 回答