使用Codeigniter检索查询结果

时间:2016-03-04 10:01:46

标签: php sql-server-2008 codeigniter

我使用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管理工具

运行时的结果

enter image description here

现在,我的问题是检索这些[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();

现在可以根据需要得到结果:

enter image description here

2 个答案:

答案 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它会对您有所帮助