CodeIgniter - 数据库结果数组,但只有一行

Posted

技术标签:

【中文标题】CodeIgniter - 数据库结果数组,但只有一行【英文标题】:CodeIgniter - database result array but only one row 【发布时间】:2012-05-02 03:15:45 【问题描述】:

我正在寻找一种从数据库查询中返回数组的方法,但仅限于第一行。我不想使用对象..

我目前的解决方案:

//Gather
$data = $this->db->from('view')->where('alias', $alias)->get()->result_array();

//Collect the first row only
$data = $data[0];

说实话,这很丑陋。如前所述,我宁愿不使用对象。

【问题讨论】:

你为什么不想使用对象?? 使用行法。 codeigniter.com/user_guide/database/results.html 也很好奇,比如@Mischa,你为什么会回避对象?尤其是在 MVC 框架中。 对象很难看?开发对你来说并不容易...... 难看为什么你这么认为,为什么你不想在面向对象的语言中使用对象? 【参考方案1】:

改用row() 方法:

$data = $this->db->from('view')->where('alias', $alias)->get()->row();

[哦,你不想使用对象。 row_array() 然后。但是考虑对象。]

【讨论】:

【参考方案2】:

你可以这样做:

$data = $this->db->from('view')->where('alias', $alias)->get()->row_array();

这与 minitech 的答案相同,只是它返回一个数组(如您所愿)而不是一个对象。

【讨论】:

【参考方案3】:

您可以使用 row_array() 函数从单行中获取数据。将该行指定为参数。

例如,要获取结果的第一行,请执行以下操作:

$this->db->from('view')->where('alias', $alias)->get()->result_array(0);

【讨论】:

【参考方案4】:

如果您只想将第一行作为数组获取,您也可以使用以下代码:

$data = $this->db->from('view')->where('alias', $alias)->get()->first_row('array');

但是如果你真的只想得到 1 个结果,总是使用 select('TOP 1 ....') 因为这个方法提高了你的查询返回时间性能。当您直接使用 get() 时,它会尝试返回整个数据,而不仅仅是第一行。然后它显示你想要的(第一行)。但是如果你使用 TOP 1 方法;这是最好的。

【讨论】:

以上是关于CodeIgniter - 数据库结果数组,但只有一行的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter:foreach 方法或结果数组?? [模型+视图]

通过数组codeigniter从数据库中获取结果

CodeIgniter 搜索结果分页

Codeigniter 未显示 MySQL 查询获取的数组的正确结果。

使用 Codeigniter 以表格形式填充动态数据

codeigniter 选择结果数组格式