我希望Codeigniter在活动记录中产生数组结果,就像mysql_fetch_array()
在标准PHP中所做的那样。
假设,我们的mysql数据库中有这个表,称为学生。
+-----+------+
| id | name |
+-----+------+
| 1 | Elto |
| 2 | John |
+------------+
这是条件。
我以单独的方式生成查询。就像:
$this->db->select('id, name');
$this->db->order_by('name', 'asc');
$q = $this->db->get('students');
$r = $q->result();
$r
将产生:
[0] (name => 'Elto')
[1] (name => 'John')
取而代之的是,我希望查询产生如下内容:
[0][0] => 'Elto'
[1][0] => 'John'
我不知道这是否可以做到。如果有人想帮助解决这个问题,我将不胜感激。
你只需要使用 result_array()
而不是 result()
:
$this->db->select('id, name');
$this->db->order_by('name', 'asc');
$q = $this->db->get('students');
$r = $q->result_array();
result()
将以对象格式返回行。
result_array()
会将行返回到数组格式。
请浏览代码点火器生成查询结果
您可以使用
$r = $q->result_array();
或者您可以使用
$r = $q->row_array();
仅检索一个项目。
查看官方文件以获取更多信息:
http://www.codeigniter.com/user_guide/database/results.html
问候。
Codeigniter 4:
$r = $q->getResultArray();
若要确保不仅第一级包含索引数组,而且每一行都包含索引元素,请将数字别名应用于 SELECT 语句中的name
列,然后使用 result_array()
或 getResultArray()
(具体取决于 CI 版本)。
根据您的数据库驱动程序,别名引号字符可能会有所不同。 在我的运行 firebird 的应用程序上进行了测试,双引号正确呈现的数字别名。
return $this->db
->select('name AS "0"')
->order_by('name', 'ASC')
->get('students')
->result_array();
将返回单元素索引数组的索引数组。
[
[0 => 'Elto'],
[0 => 'John'],
]