簡體   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