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 $row->name; // call attributes
+ echo $row->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
+
+
+
+
+
+
+