I'm trying to print a value from a group_concat query, but for some reason, the code keeps failing. If I print the array that contains my value, I am able to see that everything is being fetched correctly. But when I try to access the first element in the array, my page gives me a white screen. Why is this happening?
$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>
The following is the result for my var_dump($r)
but when I try to do a var_dump($r[0]), my page gives me a white screen.
Similarly, when I try to access the field through var_dump($r['GROUP_CONCAT(FieldValue)'])
I still get a white screen. How do can we access the field?
You need to give the field an alias -
$db->setQuery("SELECT GROUP_CONCAT( FieldValue ) AS whatever
and then
echo var_dump($r->whatever);
I am not sure why you're using $result = $db->loadObjectList();
though. You could use any of the array methods and it would be better/easier for what you're trying to do. Then you would say:
echo var_dump($r['whatever']);
First, your result type is an Object - not an Array.
So, you should access it using ->propertyName
and not ['propertyName']
.
The Array way is working, but you should reserve that for arrays - so you can clearly idenify - without looking at the object type - if you are currently using an array or object.
Second, it seems like your Access attempt is missing the whitespaces arround FieldValue
. However, it would make sence to give your concatenation an alias, which you can access without having special characters in it.
$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);
}