1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php defined('SYSPATH') OR die('No direct script access.');
- /**
- * MySQL database result. See [Results](/database/results) for usage and examples.
- *
- * @package Kohana/Database
- * @category Query/Result
- * @author Kohana Team
- * @copyright (c) 2008-2009 Kohana Team
- * @license http://kohanaphp.com/license
- */
- class Kohana_Database_MySQL_Result extends Database_Result {
- protected $_internal_row = 0;
- public function __construct($result, $sql, $as_object = FALSE, array $params = NULL)
- {
- parent::__construct($result, $sql, $as_object, $params);
- // Find the number of rows in the result
- $this->_total_rows = mysql_num_rows($result);
- }
- public function __destruct()
- {
- if (is_resource($this->_result))
- {
- mysql_free_result($this->_result);
- }
- }
- public function seek($offset)
- {
- if ($this->offsetExists($offset) AND mysql_data_seek($this->_result, $offset))
- {
- // Set the current row to the offset
- $this->_current_row = $this->_internal_row = $offset;
- return TRUE;
- }
- else
- {
- return FALSE;
- }
- }
- public function current()
- {
- if ($this->_current_row !== $this->_internal_row AND ! $this->seek($this->_current_row))
- return NULL;
- // Increment internal row for optimization assuming rows are fetched in order
- $this->_internal_row++;
- if ($this->_as_object === TRUE)
- {
- // Return an stdClass
- return mysql_fetch_object($this->_result);
- }
- elseif (is_string($this->_as_object))
- {
- // Return an object of given class name
- return mysql_fetch_object($this->_result, $this->_as_object, $this->_object_params);
- }
- else
- {
- // Return an array of the row
- return mysql_fetch_assoc($this->_result);
- }
- }
- } // End Database_MySQL_Result_Select
|