我使用pivot从我的表中选择一些记录。这是查询:
$data['master'] = $this->db->query("select * from
(
select row, c.Nilai,b.Fullname,a.KodePenilaian,d.Description from penilaian_header a
left join employee b on a.Nip = b.Nip
left join outlet d on a.Outlet = d.OutletCode
left join (select ROW_NUMBER() OVER(PARTITION BY KodePenilaianH ORDER BY idPenilaiand DESC) AS Row, Nilai,KodePenilaianH from penilaian_Detail
) c on a.KodePenilaian = c.KodePenilaianH where a.Outlet like '%$outlet%' and Periode like '%$periode%'
) nilai
pivot
(
sum(nilai)
for row in ([1],[2],[3],[4],[5])
) piv;")->result();
这是我通过MS SQL管理工具
运行时的结果现在,我的问题是检索这些[1],[2],[3],[4],[5]
值。当我这样做时:
echo "<pre>";print_r($data['master']);
die();
我只能得到这个:
Array
(
[0] => stdClass Object
(
[Fullname] => maya kristiana
[KodePenilaian] => PE0000001
[Description] => KIOS ATRIUM3
)
[1] => stdClass Object
(
[Fullname] => SHELVIA GITA PUTRI
[KodePenilaian] => PE0000002
[Description] => KIOS ATRIUM3
)
)
更新 我找到了解决方案,感谢@Alex Tartan(见下面接受的答案):
我只是将->result()
更改为->result_array();
现在可以根据需要得到结果:
答案 0 :(得分:2)
您可能想要使用
->result_array(); // instead of `->result();`
对象的数字属性是&#34;怪异的&#34;至少可以说
此外,还有阅读它们的麻烦。您必须echo $obj->{1}
此外,设置它们意味着相同的方法:$obj->{1} = 'stuff'
Codeigniter可能不会这样做。
将它们作为数组将绕过这个问题(希望如此)
答案 1 :(得分:0)
此函数将查询结果作为纯数组返回,或者在未生成结果时返回空数组。通常你会在foreach循环中使用它,如下所示:
这将返回所有记录为数组结果:
$query = $this->db->query("YOUR QUERY");
foreach ($query->result_array() as $row)
{
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
此外,如果您需要获得单一记录,则可以使用此功能:
$query = $this->db->query("YOUR QUERY");
if ($query->num_rows() > 0)
{
$row = $query->row();
echo $row->title;
echo $row->name;
echo $row->body;
}
另请参阅this它会对您有所帮助