CodeIgniter活动记录与MySQL查询之间的差异

时间:2016-06-12 16:13:00

标签: php mysql codeigniter activerecord

当我使用CodeIgniter的活动记录运行此查询时:

    $user_name  = 'mememe';
    $test = $this->db->select('filename')
                        ->where('user', $user_name)
                        ->order_by('number','asc')
                        ->limit(4)
                        ->get('mytable')
                        ->row('filename');
    print_r($test); exit;

我在浏览器上收到了这个结果:

5f

但是当我在数据库管理器上运行相同的查询时:

SELECT `filename` FROM `mytable` WHERE `user` = 'mememe' ORDER BY `number` ASC LIMIT 4

我得到了这个(这实际上是正确的,我想要的):

5f
9f
10f
11f

为什么会这样?

2 个答案:

答案 0 :(得分:2)

来自CI doc

  

行()

     

此函数返回单个结果行。如果您的查询超过   一行,它只返回第一行。结果返回为   对象

Jusr删除对row方法的调用

 $test = $this->db->select('filename')
                    ->where('user', $user_name)
                    ->order_by('number','asc')
                    ->limit(4)
                    ->get('mytable');

答案 1 :(得分:1)

row()方法只返回表中的第一行,当您想要获取单个记录时,您也可以通过传递行号行来获取其他行的数据(行号)示例row(4)

另一种方法

$query = $this->db->query("SELECT filename FROM mytable WHERE `user` = '$user_name' ORDER BY `number` ASC LIMIT 4");

foreach ($query->result() as $row)
{
        echo $row->filename;          
}