Генерация результатов запросов
Есть несколько способов генерировать результаты запросов:
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 больше не будет доступен