GROUP_CONCAT查询var_dump查询不起作用
问题描述:
我试图从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)的结果
但是当我尝试做的var_dump($ R [0]),我的网页给我一个白色的屏幕。
同样,当我尝试通过var_dump($r['GROUP_CONCAT(FieldValue)'])
访问该字段时,我仍然会看到一个白色屏幕。我们如何进入该领域?
答
你需要给该领域的别名 -
$db->setQuery("SELECT GROUP_CONCAT(FieldValue) AS whatever
然后
echo var_dump($r->whatever);
我不知道为什么你使用$result = $db->loadObjectList();
虽然。你可以使用任何一种数组方法,这对你想要做的事情会更好/更容易。然后你会说:
echo var_dump($r['whatever']);
答
首先,你的结果类型是一个对象 - 而不是一个数组。
因此,您应该使用->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);
}
它的对象,而不是对象的数组和属性可以像$ object-> property一样检索。在你的sql中添加'as groupc',然后调用$ r-> groupc; – 2014-10-30 18:01:30