[英]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 '.$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.