2016-06-12 95 views
1

当我运行使用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

从CI DOC

行()

该函数返回一个结果列。如果您的查询的行数超过 ,则只返回第一行。结果作为 对象返回。

Jusr删除调用row方法

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

行()方法只返回从表中第一行,当你想获得一个记录,你还可以通过获取数据的其他行用它传递行号行(行号)实例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;   
}