blob: a85b89befc8c997c71daf77aa9e987d1b5834eb6 [file] [log] [blame]
########################
Generating Query Results
########################
There are several ways to generate query results:
result()
========
This function returns the query result as an array of **objects**, or
**an empty array** on failure. Typically you'll use this in a foreach
loop, like this::
$query = $this->db->query("YOUR QUERY"); foreach ($query->result() as $row) {    echo $row->title;    echo $row->name;    echo $row->body; }
The above function is an alias of result_object().
If you run queries that might **not** produce a result, you are
encouraged to test the result first::
$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;    } }
You can also pass a string to result() which represents a class to
instantiate for each result object (note: this class must be loaded)
::
$query = $this->db->query("SELECT * FROM users;");
foreach ($query->result('User') as $user)
{
echo $user->name; // call attributes
echo $user->reverse_name(); // or methods defined on the 'User' class
}
result_array()
===============
This function returns the query result as a pure array, or an empty
array when no result is produced. Typically you'll use this in a foreach
loop, like this::
$query = $this->db->query("YOUR QUERY"); foreach ($query->result_array() as $row) {    echo $row['title'];    echo $row['name'];    echo $row['body']; }
row()
=====
This function returns a single result row. If your query has more than
one row, it returns only the first row. The result is returned as an
**object**. Here's a usage example::
$query = $this->db->query("YOUR QUERY"); if ($query->num_rows() > 0) {    $row = $query->row();    echo $row->title;    echo $row->name;    echo $row->body; }
If you want a specific row returned you can submit the row number as a
digit in the first parameter::
$row = $query->row(5);
You can also add a second String parameter, which is the name of a class
to instantiate the row with::
$query = $this->db->query("SELECT * FROM users LIMIT 1;"); $query->row(0, 'User') echo $row->name; // call attributes echo $row->reverse_name(); // or methods defined on the 'User' class
row_array()
============
Identical to the above row() function, except it returns an array.
Example::
$query = $this->db->query("YOUR QUERY"); if ($query->num_rows() > 0) {    $row = $query->row_array();    echo $row['title'];    echo $row['name'];    echo $row['body']; }
If you want a specific row returned you can submit the row number as a
digit in the first parameter::
$row = $query->row_array(5);
In addition, you can walk forward/backwards/first/last through your
results using these variations:
**$row = $query->first_row()**
**$row = $query->last_row()**
**$row = $query->next_row()**
**$row = $query->previous_row()**
By default they return an object unless you put the word "array" in the
parameter:
**$row = $query->first_row('array')**
**$row = $query->last_row('array')**
**$row = $query->next_row('array')**
**$row = $query->previous_row('array')**
***********************
Result Helper Functions
***********************
$query->num_rows()
===================
The number of rows returned by the query. Note: In this example, $query
is the variable that the query result object is assigned to::
$query = $this->db->query('SELECT * FROM my_table'); echo $query->num_rows();
$query->num_fields()
=====================
The number of FIELDS (columns) returned by the query. Make sure to call
the function using your query result object::
$query = $this->db->query('SELECT * FROM my_table'); echo $query->num_fields();
$query->free_result()
======================
It frees the memory associated with the result and deletes the result
resource ID. Normally PHP frees its memory automatically at the end of
script execution. However, if you are running a lot of queries in a
particular script you might want to free the result after each query
result has been generated in order to cut down on memory consumptions.
Example::
$query = $this->db->query('SELECT title FROM my_table'); foreach ($query->result() as $row) {    echo $row->title; } $query->free_result(); // The $query result object will no longer be available $query2 = $this->db->query('SELECT name FROM some_table'); $row = $query2->row(); echo $row->name; $query2->free_result(); // The $query2 result object will no longer be available