var_dump на запрос 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)

введите описание изображения здесь
но когда я пытаюсь сделать var_dump ($ r [0]), на моей странице появляется белый экран.

Точно так же, когда я пытаюсь получить доступ к полю через var_dump($r['GROUP_CONCAT(FieldValue)']) Я все еще получаю белый экран. Как мы можем получить доступ к полю?

0

Решение

Вам нужно дать поле псевдоним —

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

а потом

echo var_dump($r->whatever);

Я не уверен, почему вы используете $result = $db->loadObjectList(); хоть. Вы можете использовать любой из методов массива, и это будет лучше / проще для того, что вы пытаетесь сделать. Тогда вы скажете:

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

Другие решения

Во-первых, ваш тип результата — Объект, а не Массив.

Итак, вы должны получить доступ к нему с помощью ->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);
}
0

По вопросам рекламы [email protected]