summaryrefslogtreecommitdiffstats
path: root/user_guide_src/source/database/results.rst
diff options
context:
space:
mode:
authorAndrey Andreev <narf@devilix.net>2018-06-12 15:45:46 +0200
committerAndrey Andreev <narf@devilix.net>2018-06-12 15:45:46 +0200
commit30e2eafa86c4c7b6b39cea3e7089a90df9f603fb (patch)
tree391bc1e62d8d0ad045e18a6da72e3e2a59e91503 /user_guide_src/source/database/results.rst
parenta9da3dd2f16a8f97d7bc4ff5572b28e4bb84c813 (diff)
[ci skip] 3.1.9 release
Diffstat (limited to 'user_guide_src/source/database/results.rst')
-rw-r--r--user_guide_src/source/database/results.rst507
1 files changed, 0 insertions, 507 deletions
diff --git a/user_guide_src/source/database/results.rst b/user_guide_src/source/database/results.rst
deleted file mode 100644
index 6fea7c6be..000000000
--- a/user_guide_src/source/database/results.rst
+++ /dev/null
@@ -1,507 +0,0 @@
-########################
-Generating Query Results
-########################
-
-There are several ways to generate query results:
-
-.. contents::
- :local:
- :depth: 2
-
-*************
-Result Arrays
-*************
-
-**result()**
-
-This method 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 method is an alias of ``result_object()``.
-
-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; // access attributes
- echo $user->reverse_name(); // or methods defined on the 'User' class
- }
-
-**result_array()**
-
-This method 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'];
- }
-
-***********
-Result Rows
-***********
-
-**row()**
-
-This method 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");
-
- $row = $query->row();
-
- if (isset($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;");
- $row = $query->row(0, 'User');
-
- echo $row->name; // access attributes
- echo $row->reverse_name(); // or methods defined on the 'User' class
-
-**row_array()**
-
-Identical to the above ``row()`` method, except it returns an array.
-Example::
-
- $query = $this->db->query("YOUR QUERY");
-
- $row = $query->row_array();
-
- if (isset($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_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')**
-
-.. note:: All the methods above will load the whole result into memory
- (prefetching). Use ``unbuffered_row()`` for processing large
- result sets.
-
-**unbuffered_row()**
-
-This method returns a single result row without prefetching the whole
-result in memory as ``row()`` does. If your query has more than one row,
-it returns the current row and moves the internal data pointer ahead.
-
-::
-
- $query = $this->db->query("YOUR QUERY");
-
- while ($row = $query->unbuffered_row())
- {
- echo $row->title;
- echo $row->name;
- echo $row->body;
- }
-
-You can optionally pass 'object' (default) or 'array' in order to specify
-the returned value's type::
-
- $query->unbuffered_row(); // object
- $query->unbuffered_row('object'); // object
- $query->unbuffered_row('array'); // associative array
-
-*********************
-Custom Result Objects
-*********************
-
-You can have the results returned as an instance of a custom class instead
-of a ``stdClass`` or array, as the ``result()`` and ``result_array()``
-methods allow. This requires that the class is already loaded into memory.
-The object will have all values returned from the database set as properties.
-If these have been declared and are non-public then you should provide a
-``__set()`` method to allow them to be set.
-
-Example::
-
- class User {
-
- public $id;
- public $email;
- public $username;
-
- protected $last_login;
-
- public function last_login($format)
- {
- return $this->last_login->format($format);
- }
-
- public function __set($name, $value)
- {
- if ($name === 'last_login')
- {
- $this->last_login = DateTime::createFromFormat('U', $value);
- }
- }
-
- public function __get($name)
- {
- if (isset($this->$name))
- {
- return $this->$name;
- }
- }
- }
-
-In addition to the two methods listed below, the following methods also can
-take a class name to return the results as: ``first_row()``, ``last_row()``,
-``next_row()``, and ``previous_row()``.
-
-**custom_result_object()**
-
-Returns the entire result set as an array of instances of the class requested.
-The only parameter is the name of the class to instantiate.
-
-Example::
-
- $query = $this->db->query("YOUR QUERY");
-
- $rows = $query->custom_result_object('User');
-
- foreach ($rows as $row)
- {
- echo $row->id;
- echo $row->email;
- echo $row->last_login('Y-m-d');
- }
-
-**custom_row_object()**
-
-Returns a single row from your query results. The first parameter is the row
-number of the results. The second parameter is the class name to instantiate.
-
-Example::
-
- $query = $this->db->query("YOUR QUERY");
-
- $row = $query->custom_row_object(0, 'User');
-
- if (isset($row))
- {
- echo $row->email; // access attributes
- echo $row->last_login('Y-m-d'); // access class methods
- }
-
-You can also use the ``row()`` method in exactly the same way.
-
-Example::
-
- $row = $query->custom_row_object(0, 'User');
-
-*********************
-Result Helper Methods
-*********************
-
-**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();
-
-.. note:: Not all database drivers have a native way of getting the total
- number of rows for a result set. When this is the case, all of
- the data is prefetched and ``count()`` is manually called on the
- resulting array in order to achieve the same result.
-
-**num_fields()**
-
-The number of FIELDS (columns) returned by the query. Make sure to call
-the method using your query result object::
-
- $query = $this->db->query('SELECT * FROM my_table');
-
- echo $query->num_fields();
-
-**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 consumption.
-
-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
-
-**data_seek()**
-
-This method sets the internal pointer for the next result row to be
-fetched. It is only useful in combination with ``unbuffered_row()``.
-
-It accepts a positive integer value, which defaults to 0 and returns
-TRUE on success or FALSE on failure.
-
-::
-
- $query = $this->db->query('SELECT `field_name` FROM `table_name`');
- $query->data_seek(5); // Skip the first 5 rows
- $row = $query->unbuffered_row();
-
-.. note:: Not all database drivers support this feature and will return FALSE.
- Most notably - you won't be able to use it with PDO.
-
-***************
-Class Reference
-***************
-
-.. php:class:: CI_DB_result
-
- .. php:method:: result([$type = 'object'])
-
- :param string $type: Type of requested results - array, object, or class name
- :returns: Array containing the fetched rows
- :rtype: array
-
- A wrapper for the ``result_array()``, ``result_object()``
- and ``custom_result_object()`` methods.
-
- Usage: see `Result Arrays`_.
-
- .. php:method:: result_array()
-
- :returns: Array containing the fetched rows
- :rtype: array
-
- Returns the query results as an array of rows, where each
- row is itself an associative array.
-
- Usage: see `Result Arrays`_.
-
- .. php:method:: result_object()
-
- :returns: Array containing the fetched rows
- :rtype: array
-
- Returns the query results as an array of rows, where each
- row is an object of type ``stdClass``.
-
- Usage: see `Result Arrays`_.
-
- .. php:method:: custom_result_object($class_name)
-
- :param string $class_name: Class name for the resulting rows
- :returns: Array containing the fetched rows
- :rtype: array
-
- Returns the query results as an array of rows, where each
- row is an instance of the specified class.
-
- .. php:method:: row([$n = 0[, $type = 'object']])
-
- :param int $n: Index of the query results row to be returned
- :param string $type: Type of the requested result - array, object, or class name
- :returns: The requested row or NULL if it doesn't exist
- :rtype: mixed
-
- A wrapper for the ``row_array()``, ``row_object() and
- ``custom_row_object()`` methods.
-
- Usage: see `Result Rows`_.
-
- .. php:method:: unbuffered_row([$type = 'object'])
-
- :param string $type: Type of the requested result - array, object, or class name
- :returns: Next row from the result set or NULL if it doesn't exist
- :rtype: mixed
-
- Fetches the next result row and returns it in the
- requested form.
-
- Usage: see `Result Rows`_.
-
- .. php:method:: row_array([$n = 0])
-
- :param int $n: Index of the query results row to be returned
- :returns: The requested row or NULL if it doesn't exist
- :rtype: array
-
- Returns the requested result row as an associative array.
-
- Usage: see `Result Rows`_.
-
- .. php:method:: row_object([$n = 0])
-
- :param int $n: Index of the query results row to be returned
- :returns: The requested row or NULL if it doesn't exist
- :rtype: stdClass
-
- Returns the requested result row as an object of type
- ``stdClass``.
-
- Usage: see `Result Rows`_.
-
- .. php:method:: custom_row_object($n, $type)
-
- :param int $n: Index of the results row to return
- :param string $class_name: Class name for the resulting row
- :returns: The requested row or NULL if it doesn't exist
- :rtype: $type
-
- Returns the requested result row as an instance of the
- requested class.
-
- .. php:method:: data_seek([$n = 0])
-
- :param int $n: Index of the results row to be returned next
- :returns: TRUE on success, FALSE on failure
- :rtype: bool
-
- Moves the internal results row pointer to the desired offset.
-
- Usage: see `Result Helper Methods`_.
-
- .. php:method:: set_row($key[, $value = NULL])
-
- :param mixed $key: Column name or array of key/value pairs
- :param mixed $value: Value to assign to the column, $key is a single field name
- :rtype: void
-
- Assigns a value to a particular column.
-
- .. php:method:: next_row([$type = 'object'])
-
- :param string $type: Type of the requested result - array, object, or class name
- :returns: Next row of result set, or NULL if it doesn't exist
- :rtype: mixed
-
- Returns the next row from the result set.
-
- .. php:method:: previous_row([$type = 'object'])
-
- :param string $type: Type of the requested result - array, object, or class name
- :returns: Previous row of result set, or NULL if it doesn't exist
- :rtype: mixed
-
- Returns the previous row from the result set.
-
- .. php:method:: first_row([$type = 'object'])
-
- :param string $type: Type of the requested result - array, object, or class name
- :returns: First row of result set, or NULL if it doesn't exist
- :rtype: mixed
-
- Returns the first row from the result set.
-
- .. php:method:: last_row([$type = 'object'])
-
- :param string $type: Type of the requested result - array, object, or class name
- :returns: Last row of result set, or NULL if it doesn't exist
- :rtype: mixed
-
- Returns the last row from the result set.
-
- .. php:method:: num_rows()
-
- :returns: Number of rows in the result set
- :rtype: int
-
- Returns the number of rows in the result set.
-
- Usage: see `Result Helper Methods`_.
-
- .. php:method:: num_fields()
-
- :returns: Number of fields in the result set
- :rtype: int
-
- Returns the number of fields in the result set.
-
- Usage: see `Result Helper Methods`_.
-
- .. php:method:: field_data()
-
- :returns: Array containing field meta-data
- :rtype: array
-
- Generates an array of ``stdClass`` objects containing
- field meta-data.
-
- .. php:method:: free_result()
-
- :rtype: void
-
- Frees a result set.
-
- Usage: see `Result Helper Methods`_.
-
- .. php:method:: list_fields()
-
- :returns: Array of column names
- :rtype: array
-
- Returns an array containing the field names in the
- result set.