Получение результатов запроса
Существует несколько способов получения результатов запроса:
result()
Эта функция возвращает результаты запроса в виде массива объектов, или пустой массив в случае неудачи. Лучше всего такой результат обрабатывается перебором массива с помощью foreach:
$query = $this->db->query("Ваш запрос");
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->body;
}
Упомянутая function является псевдонимом result_object().
Если выполняется запрос, у которого возможен пустой результат, то узнать количество полученых записей можно так:
$query = $this->db->query("Ваш запрос");
if ($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->body;
}
}
result_array()
Эта функция возвращает результат запроса, но только в виде массива (если результатов нет, то массив пустой). Удобно использовать foreach для перебора результатов:
$query = $this->db->query("Ваш запрос");
foreach ($query->result_array() as $row)
{
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
row()
Эта функция возвращает одну строку из результатов запроса. Если результат содержит несколько строк, то выбраной будет только первая. Результат возвращается сразу в виде объекта. Пример использования:
$query = $this->db->query("Ваш запрос");
if ($query->num_rows() > 0)
{
$row = $query->row();
echo $row->title;
echo $row->name;
echo $row->body;
}
Если вам нужна какая-то конкретная строка, вы можете указать её номер в качестве первого параметра:
$row = $query->row(5);
row_array()
Так же как и row(), данная функция возвращает одну строку результата, но только в виде массива. Пример:
$query = $this->db->query("Ваш запрос");
if ($query->num_rows() > 0)
{
$row = $query->row_array();
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
Если вам нужна какая-то конкретная строка, вы также можете указать её номер в качестве первого параметра:
$row = $query->row_array(5);
Дополнительно, вы можете перемещаться вперёд/назад/к первому/к последнему элементу ваших результатов, используя следующие функции:
$row = $query->first_row()
$row = $query->last_row()
$row = $query->next_row()
$row = $query->previous_row()
По умолчанию они возвращают объект, кроме тех случаев, когда в параметрах указано слово «array» (массив):
$row = $query->first_row('array')
$row = $query->last_row('array')
$row = $query->next_row('array')
$row = $query->previous_row('array')
Хелперы для обработки результатов выборки
$query->num_rows()
Количество строк, полученых по выполнению запроса. Замечание: в данном примере, $query это переменная, которой присваиваются результаты выполнения запроса в виде объекта:
$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_rows();
$query->num_fields()
Количество ПОЛЕЙ (колонок), возвращаемых по выполнению запроса. Убедитесь, что вызываете функцию для объекта результатов запроса:
$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_fields();
$query->free_result()
Функция высвобождает память, предназначенную для хранения результатов выборки и удаляет идентификатор ресурса. Обычно, PHP автоматически высвобождает память по окончанию работы скрипта, но если вы выполняете большое количество запросов в рамках одного скрипта, то в целях экономии ресурсов есть смысл очищать память после получения каждого результата. Пример:
$query = $this->db->query('SELECT title FROM my_table');
foreach ($query->result() as $row)
{
echo $row->title;
}
$query->free_result(); // Объект $query более не будет доступен для работы с результатами выборки
$query2 = $this->db->query('SELECT name FROM some_table');
$row = $query2->row();
echo $row->name;
$query2->free_result(); // Объект $query2 более не будет доступен для работы с результатами выборки