Запросы на «чтение» - get()
и get_where()
- не документированы правильно. Он говорит, что возвращаемое значение равно CI_DB_result
, но также может возвращать FALSE
. Я всегда проверяю возвращение методов «чтения», используя этот шаблон (или что-то подобное).
$query = $this->db->get();
return $query !== FALSE ? $query->result() : NULL;
Главное знать, что $query
не FALSE
, прежде чем пытаться запустить метод для него.
Для запросов «записи» просто возвращает результат работы метода Query Builder, например,
return $this->db->insert('mytable', $data);
Естественно, получатель этого возврата должен обратить внимание.
Следующая строка кода может вернуть любой из следующих объектов: TRUE
, FALSE
или CI_DB_result
объект.
$this->db->query('YOUR QUERY HERE');
Полное определение query()
равно
DB_driver::query($sql, $binds = FALSE, $return_object = NULL);
Настройте проверку возврата на запрос строки $sql
.
После определения синтаксиса оператора запроса будущие проблемы чаще всего связаны с неверными входными данными. Я обычно трачу больше времени на проверку входных данных запроса, чем на выход. Вещи как: есть ли здесь ценность? Это правильный тип данных? Это в ожидаемом диапазоне? Вывоз мусора - Вывоз мусора.