繁体   English   中英

Joomla中的mysql下一个和之前的SQL语句在orderby中

[英]mysql within Joomla next and previous SQL statement within orderby

我知道事情是错误地转义的,但是我正在尝试编写上一个/下一个查询以获取订单中的下一个id和前一个id,但是我的输出与phpmyadmin排序不匹配,它应该。 我只是写了'next',并且会用反向条件写出前一个。 这个查询似乎给了我订单中下一个最高的ID值...我需要订单索引中的下一个或上一个...任何人都可以帮忙吗?

$db = JFactory::getDBO();
$query = "SELECT image_id FROM #__jxgallery_images WHERE image_id >".$currentid."' ORDER   BY '".$ordering." ".$direction." LIMIT 1";
// Executes the current SQL query string.
    $db->setQuery($query);
// returns the array of database objects
    $list = $db->loadObjectList();
// create the list of ids
    foreach ($list as $item) {
    $next = $item->image_id;
    echo $next.'<br/>';
    }
echo 'The next ID in this sort state is&nbsp;'.$next.'<br />';
?>

这是phpmyadmin,它是对的......

SELECT * FROM `jos_jxgallery_images` 
ORDER BY `jos_jxgallery_images`.`hits` DESC 
LIMIT 0 , 30

我现在在我的代码中匹配此查询以获得相同的结果。 我的变量填写了($ ordering)'hits'字段和my子句中的'desc'($ direction)。 这很好。 image_ids和点击不是特别的......只是数字。 订购点击时,会调整image_ids以进行匹配。 对于字段中的内容,我不需要image_id的下一个值。 根据当前的image_id I插件,无论值如何,我都需要下一行或上一行。

这些是实际的image_ids LIMIT 5,它们由命中字段Descending排序:

52791 
52801 
52781 
52771 
52581`

现在,如果我正在查看的当前图像的id为52791 ,那么之前应该没有任何内容,接下来应该是52801 我的查询正在做什么我认为给我一个更高值的image_id为'next',因为那是下一个最高的VALUED image_id,而不是下一行。 我可以在查询中看到为什么我要求的不仅仅是......但我只需要下一行

我认为问题在于您的WHERE条件: WHERE image_id >".$currentid."'

如果我理解你想要做什么,一种方法是这样做:

$query = "SELECT image_id FROM `#__jxgallery_images` ORDER BY ".$ordering." ".$direction." LIMIT 2";

$db->setQuery($query);

$list = $db->loadObjectList();

$next_item = $list[1]->image_id;

请注意,WHERE条件已从查询中删除,我还将LIMIT 1更改为LIMIT 2 这样,查询基本上返回您的最高值和具有下一个最高“命中”值的那个。

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM