所以我试图通过添加下一个和上一个链接来为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的超链接......在=之后它们只是空白。我做错了什么?
答案 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