2014-03-24 53 views
0

查詢工作,我有這個疑問不能與可變

AND i.state = 1 
AND i.language = "'.$mylang.'" 
AND i.access IN ('.implode(',', $user->getAuthorisedViewLevels()).') 

我應該得到的內容僅適用於當前的語言),奇怪的是,與PHP變量$ mylang它不工作(寫它-IT)我得到的內容。 我已經檢查了$ mylang和它的結果it-IT。

任何線索? 謝謝。

+0

發佈完整的查詢代碼。 –

+0

使用值檢查所有變量,然後傳遞給查詢.... –

+0

從MySQL文檔中:啓用了ANSI_QUOTES SQL模式,因爲在雙引號內引用的字符串被解釋,因此字符串文字只能在單引號內引用作爲標識符。' – Diamondo25

回答

1

我不知道1 = 1節在WHERE,但忽略了 嘗試是這樣的:

$db = JFactory::getDBO(); 
$query = $db->query(true); 
$query->select('i.*') 
    ->from($db->quteName('#__content')) 
    ->where($db->quoteName('i.state') . ' = 1') 
    ->where($db->quoteName('i.language') .' = ' $db->quote($mylanguage)) 
    ->where($db->quoteName('i.access') . ' IN (' . impode(',',$user->getAuthorisedViewLevels()) . ')') 
... 
; 
$db->set($query); 
.... 

另外,如果您的查詢是不工作的最好的事情是做echo $query->dump()到查看呈現的查詢,如果打開調試器,也可以查看查詢。