Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

# CodeIgniter User Guide Version 2.1.3

Search User Guide

# Генерация результатов запросов

Вот несколько путей для генерации результатов запросов:

## result()

Эта функция возвращает результат запроса в виде массива объектов, или пустой массив в случае неудачи. Обычно вы будете использовать цикл foreach, к примеру так:

`$query = $this->db->query("YOUR QUERY");
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->body;
}`

Выше result() это алиас result_object().

Если вы выполняете запросы, которые могут не производить результата, вы должны протестировать его:

`$query = $this->db->query("YOUR QUERY");
if ($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->body;
}
}`

Вы также можете передать строку в result(), которая представляет собой класс для создания экземпляров для каждого объекта результата (примечание: класс должен быть загружен)

`$query = $this->db->query("SELECT * FROM users;");
foreach ($query->result('User') as $row)
{
echo $row->name; // аттрибуты вызова
echo $row->reverse_name(); // или методы, определенные классом 'User'
}`

## result_array()

Эта функция возвращает результат запроса как обычный массив, или пустой массив, если результата нет. Обычно вы будете использовать ее в цикле foreach(), например так:

`$query = $this->db->query("YOUR QUERY");
foreach ($query->result_array() as $row)
{
echo $row['title'];
echo $row['name'];
echo $row['body'];
}`

## row()

Эта функция возвращает единственную строку результата. Если ваш результат вашего запроса состоит более, чем из одной строки, она вернет первую. Результат возвращается как объект. Вот пример использования:

`$query = $this->db->query("YOUR QUERY");
if ($query->num_rows() > 0)
{
$row = $query->row();
echo $row->title;
echo $row->name;
echo $row->body;
}`

Вы можете уточнить количество возвращаемых строк в первом параметре:

`$row = $query->row(5);`

Также вы можете добавить второй строковый параметр, который будет именем класса для экземляра строки:

`$query = $this->db->query("SELECT * FROM users LIMIT 1;");
$query->row(0, 'User')
echo $row->name; // аттрибуты вызова
echo $row->reverse_name(); // или методы, определенные классом 'User'
`

## row_array()

Идентично функции выше row(), за исключением того, что возвращает массив:

`$query = $this->db->query("YOUR 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 более не доступен`

### Поделиться

Переведено в компании Аринт.

# Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

## Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter