在询问我的last question之后,我认为问题已经解决了,并且当我尝试解决时,提供的答案正在运行。
现在的问题是导航选择数据库中的上一行和下一行,直到product_id为100+,然后失败。
以下是我用来生成链接的代码:
$prevProduct = $prod - 3;
$queryNextProductID = 'SELECT product_id FROM products WHERE product_id > '.$prod.' AND category='.$cat.' LIMIT 1';
$queryPrevProductID = 'SELECT product_id FROM products WHERE product_id < '.$prod.' AND category='.$cat.' LIMIT '.$prevProduct.',1';
当$queryPrevProductID
返回空结果集时,product_id
1
3
5
80
103
104
将返回表中的上一行,直到100+。
这是我的表格的简化版本,以便更好地解释这个问题:
product_id=3
在1
页面上,上一个链接为5
,下一个链接为product_id=80
在5
页面上,上一个链接为103
,下一个链接为product_id=103
在104
页面上,上一个链接不在那里,下一个链接将是{{1}}
关于这个问题的任何想法?
答案 0 :(得分:1)
更改您的查询。不需要使用带偏移的限制。此外,您还需要使用“ORDER BY product_id”或下一个产品以及“ORDER BY product_id DESC ”作为上一个产品。
$queryNextProductID = 'SELECT product_id FROM products WHERE product_id > '.$prod.' AND category='.$cat.' ORDER BY product_id LIMIT 1';
$queryPrevProductID = 'SELECT product_id FROM products WHERE product_id < '.$prod.' AND category='.$cat.' ORDER BY product_id DESC LIMIT 1';
答案 1 :(得分:0)
您正在使用LIMIT:
LIMIT '.$prevProduct.',1'
那将会遇到
LIMIT 100,1
这不会将结果集限制为'product_id'= 100的行之后的1行,而是结果中第100行之后的1行。
只需删除代码'.$prevProduct.'
并使用ORDER BY product_id
对结果进行排序。