CodeIgniter User Guide Version 2.0.0


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

Есть несколько способов генерировать результаты запросов:

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_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);

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()

Освобождает память, занятую результатом, и удаляет resource ID результата. Обычно 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 больше не будет доступен