从查询结果到关联数组Codeigniter

时间:2018-09-21 23:33:37

标签: php codeigniter codeigniter-3 associative-array

我正在编写一个新类来处理我的数据库,我真的很想实现一些我在编程时通常会做的自定义功能。 这些功能之一是可以从查询两个字段中获取内容,如下所示:

SELECT brandId,brandName FROM Brands;

结果是一个关联数组,其索引为我的brandId且值为brandName

这是我到目前为止尝试过的,但是应用程序似乎卡住了,无法产生任何错误消息,只是无休止地加载

function getColHash($query){
    $output = array();
    while ($result = $this->query($query)->result()) {
        $output[$result[0]] = $result[1];

    }
    return $output;
  }

一些提示将不胜感激

2 个答案:

答案 0 :(得分:1)

$result = $this->query($query)->result();执行查询并将所有结果提取到$result中。只要查询返回任何行,在类似while的循环条件下执行该操作都是无限的。

您可以先获取结果,然后对其进行迭代以生成您的输出。另外,it looks like result() returns an array of objects,所以您可能想要result_array()

$results = $this->query($query)->result_array();

foreach ($results as $result) {
    $output[$result[0]] = $result[1];
}

我不确定Codeigniter是否返回带有数字索引和字符串索引的结果数组,因此您可能需要设置$result = array_values($result)才能引用$result[0]$result[1]

答案 1 :(得分:0)

我建议您使用:

$result = $this->db->query($query);

然后执行:

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

您可以阅读文档以获取有关查询结果的更多信息。

此处是文档:https://www.codeigniter.com/user_guide/database/results.html