Фреймворк CodeIgniter Version 2.1.3


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

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

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 более не доступен
    Поддержать сайт на родительском проекте КГБ