Codeigniter - выполнить действие, если запрос к базе данных не дал результатов - PullRequest
6 голосов
/ 09 ноября 2011

Как я могу вернуть значение 'данные не найдены', если мой запрос не возвращает результатов ???

Это мой код:

    function getTerms($letter) {


    $this->db->select('term, definition');
    $this->db->from('glossary');
    $this->db->where(array('letter' => $letter));

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

    foreach ($query->result() as $row) {
        $data[] = array(
            'term' => $row->term,
            'definition' => $row->definition
        );
    }

    return $data;
}

В настоящее время он возвращает $ dataпеременная, даже если запрос не возвращает результатов, что дает мне ошибки php.Как проверить, есть ли результаты перед возвратом массива $ data.

Ответы [ 4 ]

13 голосов
/ 09 ноября 2011

Просто убедитесь, что запрос возвращает хотя бы одну строку:

if ($query->num_rows() > 0) {
    // query returned results
} else {
    // query returned no results
}

Подробнее в документах

3 голосов
/ 09 ноября 2011

В настоящее время он возвращает переменную $ data, даже если запрос не возвращает результатов, которые дают мне ошибки php.

Хорошая привычка инициализировать массив, который вы намереваетесь построить:

$data = array();
// Loop through possible results, adding to $data

Если результатов нет, вы получите пустой массив, проверьте это в вашем контроллере.

Таким образом, по крайней мере, переменная определена, и вы не будете получать уведомления.

2 голосов
/ 09 ноября 2011

Как насчет дать начальное пустое значение массива для $data Просто поставьте

$data = array();

перед foreach

1 голос
/ 09 ноября 2011
<?php

    return is_array($data) ? $data : array();
}
...