GROUP_CONCAT查询中的var_dump无法正常工作

时间:2014-10-30 17:52:34

标签: php mysql group-concat

我正在尝试从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)

的结果

enter image description here 但是当我尝试做一个var_dump($ r [0])时,我的页面给了我一个白色的屏幕。

同样,当我尝试通过var_dump($r['GROUP_CONCAT(FieldValue)'])访问该字段时,我仍然会看到白屏。我们如何进入该领域?

2 个答案:

答案 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);
}