簡體   English   中英

如何從Joomla中的組件菜單項獲取MySQL查詢結果,並使用foreach where子句進行優化?

[英]How do I get MySQL query results from component menu item in Joomla and refine with a foreach where clause?

我有定制組件J 2.5。 在該組件的菜單中,我也有sql字段:

<field
    name="title"
    type="sql"
    default="10"
    label="აირჩიეთ კატეგორია"
    multiple="multiple"
    query="SELECT id AS value, title FROM #__deals_categories"
/>

我從函數中獲取數據並將其存儲在$category數組中:

$dealsparam = JFactory::getApplication()->getParams();
$category = $dealsparam->get(title, 10);

$ category的輸出是數組:

Array ( [0] => 20 [1] => 23 [2] => 33 [3] => 41 [4] => 49 )

這些是數據庫中的類別ID。 另外,我還有一個從這些類別中獲取內容的功能。 當我有一個類別ID時,一切正常,但是當我有多個類別ID時:例如2、4、5等,則無法從mysql獲取數據。 我嘗試foreach一個where子句,但是有一些我無法理解的錯誤。

在下面的內容中,我嘗試遍歷where子句並從許多不同的類別中獲取數據:

if ($category) {
    print_r ($category);
    foreach ($category as $cat){
        $query->where('d.category_id = ' . (int) $cat);
        echo $cat.'<br>';
    }
}

您應該使用IN而不是= condition-

$category = (array) $category;
jimport('joomla.utilities.arrayhelper');
JArrayHelper::toInteger($category);
if(!empty($category)){
    $query->where('d.category_id IN(' . implode(',', $category) . ')');
}

您使用'$ query-> where'語句執行的操作是在查詢中添加'AND'SQL條件。 因此,如果一項僅屬於一個類別,則不會有任何項匹配。 您有兩種選擇:1-由Irfan聲明:使用IN(category1,category2,...)2-使用'OR'組成查詢:

(d.category_id = category1) OR (d.category_id = category2) ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM