我正在尝试从group_concat查询中打印一个值,但由于某种原因,代码仍然失败。如果我打印包含我的值的数组,我能够看到所有内容都被正确获取。但是当我尝试访问数组中的第一个元素时,我的页面给了我一个白色的屏幕。为什么会这样?
$db =& JFactory::getDBO();
$db->setQuery("SELECT GROUP_CONCAT( FieldValue )
FROM tpro_rsform_submission_values
WHERE FieldName
IN (
'LAST NAME', 'FIRST NAME'
)
GROUP BY SubmissionId");
$result = $db->loadObjectList();
foreach ($result as $r) {
echo var_dump($r);
}
// </code>
以下是我的var_dump($ r)
的结果但是当我尝试做一个var_dump($ r [0])时,我的页面给了我一个白色的屏幕。
同样,当我尝试通过var_dump($r['GROUP_CONCAT(FieldValue)'])
访问该字段时,我仍然会看到白屏。我们如何进入该领域?
答案 0 :(得分:1)
您需要为该字段指定别名 -
$db->setQuery("SELECT GROUP_CONCAT( FieldValue ) AS whatever
然后
echo var_dump($r->whatever);
我不确定你为什么要使用$result = $db->loadObjectList();
。你可以使用任何数组方法,它会更好/更容易你正在尝试做什么。然后你会说:
echo var_dump($r['whatever']);
答案 1 :(得分:0)
首先,您的结果类型是Object - 而不是Array。
因此,您应该使用->propertyName
而不是['propertyName']
来访问它。
Array方式正在运行,但您应该为数组保留 - 因此,如果您当前正在使用数组或对象,则可以清楚地识别 - 而无需查看对象类型。
其次,您的Access尝试似乎缺少FieldValue
周围的空格。但是,它会为您的串联提供一个别名,您可以访问该别名而不需要包含特殊字符。
$db =& JFactory::getDBO();
$db->setQuery("SELECT GROUP_CONCAT( FieldValue ) AS myColumn
FROM tpro_rsform_submission_values
WHERE FieldName
IN (
'LAST NAME', 'FIRST NAME'
)
GROUP BY SubmissionId");
$result = $db->loadObjectList();
foreach ($result as $r) {
echo var_dump($r->myColumn);
}