Я пытаюсь напечатать значение из запроса 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)'])
Я все еще получаю белый экран. Как мы можем получить доступ к полю?
Вам нужно дать поле псевдоним —
$db->setQuery("SELECT GROUP_CONCAT( FieldValue ) AS whatever
а потом
echo var_dump($r->whatever);
Я не уверен, почему вы используете $result = $db->loadObjectList();
хоть. Вы можете использовать любой из методов массива, и это будет лучше / проще для того, что вы пытаетесь сделать. Тогда вы скажете:
echo var_dump($r['whatever']);
Во-первых, ваш тип результата — Объект, а не Массив.
Итак, вы должны получить доступ к нему с помощью ->propertyName
и не ['propertyName']
,
Способ Array работает, но вы должны зарезервировать его для массивов — чтобы вы могли четко идентифицировать — не глядя на тип объекта — если вы в настоящее время используете массив или объект.
Во-вторых, похоже, что в вашей попытке доступа отсутствуют пробелы вокруг 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);
}