От результата запроса к ассоциативному массиву Codeigniter - PullRequest
0 голосов
/ 22 сентября 2018

Я пишу новый класс для обработки моей базы данных, и я действительно хотел бы реализовать некоторые пользовательские функции, которые я обычно делаю во время программирования.Одной из таких функций является возможность извлечения из поля запроса два, примерно так:

SELECT brandId,brandName FROM Brands;

И в результате получается ассоциативный массив, индексированный как my brandId и со значением brandName.

Это то, что я пробовал до сих пор, но приложение, похоже, застряло и не может выдать сообщение об ошибке, просто завершается загрузка

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

    }
    return $output;
  }

Некоторые подсказки были бы очень полезны

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Я рекомендую вам использовать:

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

и затем:

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

вы можете прочитать документацию для получения дополнительной информации о результатах запроса.

вот документация: https://www.codeigniter.com/user_guide/database/results.html

0 голосов
/ 22 сентября 2018

$result = $this->query($query)->result(); выполняет запрос и извлекает все результаты в $result.Пока запрос возвращает любые строки, выполнение этого условия цикла while будет бесконечным.

Вы можете сначала получить результаты, а затем итерировать их, чтобы сгенерировать вывод.Кроме того, похоже, что result() возвращает массив объектов , поэтому вы, вероятно, хотите вместо этого 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].

...