Joomla选择'列'在数组中

时间:2014-07-16 02:23:10

标签: php sql joomla

我对joomla有以下查询:

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select($db->quoteName(array('name','username','depto')))
->from($db->quoteName('#__users','a'))
->join('RIGHT', $db->quoteName('#__comprofiler','b').'ON('.$db->quoteName('a.id').' = '.$db->quoteName('b.id').')')
->where($db->quoteName('depto').' IN '.$db->quoteName(array($my_array)))
->order($db->quoteName('name'));
$db->setQuery($query);
$result = $db->loadObjectList();

在$ my_array中我有一组值我想用来过滤我的结果,例如:

$sql = "SELECT * FROM Users WHERE depto IN ($my_array)";

我确实试图使用内爆,但我根本没有得到任何结果。

$my_array = implode(",",$my_array);

任何人都知道如何使用db->逃避这种情况?

2 个答案:

答案 0 :(得分:1)

这里你不应该有quoteName,你没有引用一个名字:

$db->quoteName(array($my_array)))

你需要

. ' (' . implode(',', $my_array) . ')'

另外我想补充一点,如果你使用quoteName()的原因是数组是一个字符串数组,你需要更多地计划一下。首先你应该使用quote(),因为这是你用来获得正确的字符串引用。但其次,你将不得不更好地计划内爆,以便让$db->quote()包裹在数组中的每个元素周围。幸运的是,$ db-> quote()接受一个数组作为输入。所以你真正想要的是更像这样的事情

. ' (' . $db->quote($my_array) . '")'

答案 1 :(得分:0)

试试这段代码:

$sql = "SELECT * FROM Users WHERE depto IN ('".implode("', '", $my_array)."')";