当我使用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
为什么会这样?
答案 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;
}