2014-10-30 162 views
0

我试图从group_concat查询中打印一个值,但由于某些原因,代码仍然失败。如果我打印包含我的值的数组,我可以看到所有内容都正确提取。但是当我尝试访问数组中的第一个元素时,我的页面给了我一个白色屏幕。这是为什么发生?GROUP_CONCAT查询var_dump查询不起作用

$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)'])访问该字段时,我仍然会看到一个白色屏幕。我们如何进入该领域?

+0

它的对象,而不是对象的数组和属性可以像$ object-> property一样检索。在你的sql中添加'as groupc',然后调用$ r-> groupc; – 2014-10-30 18:01:30

回答

1

你需要给该领域的别名 -

$db->setQuery("SELECT GROUP_CONCAT(FieldValue) AS whatever 

然后

echo var_dump($r->whatever); 

我不知道为什么你使用$result = $db->loadObjectList();虽然。你可以使用任何一种数组方法,这对你想要做的事情会更好/更容易。然后你会说:

echo var_dump($r['whatever']); 
0

首先,你的结果类型是一个对象 - 而不是一个数组。

因此,您应该使用->propertyName而不是['propertyName']来访问它。

数组方式正在工作,但是您应该为数组保留该数组 - 因此您可以清楚地识别 - 无需查看对象类型 - 如果您当前正在使用数组或对象。

其次,您的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); 
}