Я пытаюсь охватить все свои базы в случае, если моя база данных MYSQL возвращает какие-либо ошибки (без строк, без подключения, без таблицы и т. Д.), Когда я делаю запрос с использованием CodeIgniter 3
.
У меня есть вспомогательная функция, которая возвращает широту и долготу на основе предоставленного почтового индекса.Он всегда будет возвращать только одну строку (если запись завершена).Вот моя вспомогательная функция на данный момент:
if (!function_exists('get_coordinates_from_zipcode')) {
//gets latitude and longitude coordinates from supplied zipcode. Returns array
function get_coordinates_from_zipcode($zipcode) {
$ci =& get_instance();
$ci->load->database();
$query = $ci->db->get_where('Geo', array('zip =' => $zipcode))->row_array();
if (!$query) {
return FALSE;
} else {
return $query;
}
}
//* Fields returned from geolocation database *//
/* -zip
-lat
-lng
// Returns false on error or no records
*/
}
А вот мой View
, который я использую (передавая ему массив $data['array']
из моего Controller
):
<?php if ($array == FALSE || !$array) : ?>
<?php echo "No data returned"; ?>
<?php else : ?>
<?php echo $array['zip'] . ' is located at ' . $array['lat'] . ' and ' . $array['lng']; ?>
<?php endif; ?>
Это хорошо работает, если строк нет, но я хочу решить любые другие проблемы, например, более одной строки (маловероятно, что это произойдет), или если есть проблема с подключением к базе данных или таблице.
Я пробовал это в моем Helper
if ($ci->db->error()) {
return $ci->db->error(); //
} else {
return $query;
}
Когда я делаю это и намеренно использую недопустимый почтовый индекс, чтобы передать ошибку в представление, $ci->db->error()
всегда возвращает array(2) { ["code"]=> int(0) ["message"]=> string(0) "" }
ипустой.И, конечно, я получаю ошибки, которые Undefined index: lat
и Undefined index: lng
Должен ли я передавать массив $ci-db->error()
в представление и действовать там?
Я просто хочу убедиться,все мои базы покрыты.По моему мнению, я должен обрабатывать ошибки в функции Helper
, но error()
всегда кажется пустым, даже когда есть ошибка (например, нет строк, нет подключения к БД или нет таблицы с таким именем.
Я чувствую, что
if (!$query) {
return FALSE;
} else {
return $query;
}
внутри моей вспомогательной функции не покроет все проблемы, которые могут возникнуть при подключении к базе данных.