2014-10-30 160 views
0

我試圖從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)的結果

enter image description here 但是當我嘗試做的var_dump($ R [0]),我的網頁給我一個白色的屏幕。

同樣,當我嘗試通過var_dump($r['GROUP_CONCAT(FieldValue)'])訪問該字段時,我仍然會看到一個白色屏幕。我們如何進入該領域?

+0

它的對象,而不是對象的數組和屬性可以像$ object-> property一樣檢索。在你的sql中添加'as groupc',然後調用$ r-> groupc; – 2014-10-30 18:01:30

回答

1

你需要給該領域的別名 -

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

然後

echo var_dump($r->whatever); 

我不知道爲什麼你使用$result = $db->loadObjectList();雖然。你可以使用任何一種數組方法,這對你想要做的事情會更好/更容易。然後你會說:

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

首先,你的結果類型是一個對象 - 而不是一個數組。

因此,您應該使用->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); 
}