【问题标题】:var_dump on GROUP_CONCAT query not workingGROUP_CONCAT 查询上的 var_dump 不起作用
【发布时间】:2014-12-26 21:46:58
【问题描述】:

我正在尝试从 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)']) 访问该字段时,我仍然得到一个白屏。我们如何访问该字段?

【问题讨论】:

  • 它是对象,而不是数组,对象的属性可以像 $object->property 一样检索。在你的 sql 添加 'as groupc' 然后调用 $r->groupc;

标签: php mysql group-concat


【解决方案1】:

你需要给这个字段一个别名 -

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

然后

echo var_dump($r->whatever);

我不确定你为什么使用$result = $db-&gt;loadObjectList();。您可以使用任何数组方法,并且对于您尝试做的事情会更好/更容易。然后你会说:

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

【讨论】:

    【解决方案2】:

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

    因此,您应该使用-&gt;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);
    }
    

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 2012-07-28
      • 2013-05-03
      • 2021-01-18
      • 2016-11-02
      • 2014-03-09
      • 1970-01-01
      • 2014-08-18
      • 2016-12-04
      相关资源
      最近更新 更多