Php 选择多行并连接成一行-在joomla中
我在选择多行并将其作为一行检索时遇到问题。问题在于Joomla将来自userprofile的数据存储在两列中,这两列分别称为profile_key和profile_value。我想从名为“profile.li\u vid”、“profile.li\u kre”的列“profile\u key”中检索与列“profile\u value”对应的所有行,其中的值为“1” DB草稿Php 选择多行并连接成一行-在joomla中,php,mysql,joomla,Php,Mysql,Joomla,我在选择多行并将其作为一行检索时遇到问题。问题在于Joomla将来自userprofile的数据存储在两列中,这两列分别称为profile_key和profile_value。我想从名为“profile.li\u vid”、“profile.li\u kre”的列“profile\u key”中检索与列“profile\u value”对应的所有行,其中的值为“1” DB草稿 user_id | profile_key | profile_value 475 | profi
user_id | profile_key | profile_value
475 | profile.li_vid | "1"
475 | profile.li_kre | "1"
475 | profile.address1 | "1"
476 | profile.li_vid | "1"
476 | profile.li_kre | "1"
476 | profile.address1 | "1"
代码
当我以foreach循环的方式将它们回显到屏幕上时,它们在我的表中出现在单独的行中,因为代码逐行循环遍历每个查询结果。我想到了一个解决方案,将多行连接成一行,但如何实现呢?
我希望你能帮助我。记住:默认情况下,GROUP_CONCAT()的字符限制为1024个 你可以使用mysqls
GROUP\u CONCAT
但我不知道如何在Joomla中使用。是的-我尝试过,但在选择行中遇到错误-你能用纯SQL发布你的查询吗?那我就可以帮你了。谢谢Daan-是的,在纯SQL中这是可能的-但是在Joomla中我遇到了麻烦!但是谢谢你的回复。
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select ($db->quoteName(array('a.id','a.name', 'b.profile_value','b.profile_key')))
->from ($db->quoteName('#__users','a'))
->where ($db->quoteName('b.profile_key') . " = " . $db->quote('profile.li%'))
// ->where ($db->quote('profile_value') . " = \"1\" " )
->join('INNER', $db->quoteName('#__user_profiles','b').'ON('.$db->quoteName('a.id').'='.$db->quoteName('b.user_id').')')
->order($db->quoteName('a.name').'ASC')
;
$db->setQuery($query);
$rows = $db->loadObjectList();