<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**

 * CodeIgniter

 *

 * An open source application development framework for PHP 5.1.6 or newer

 *

 * @package		CodeIgniter

 * @copyright	Copyright (c) 2008 - 2011, EllisLab, Inc.

 * @license		http://codeigniter.com/user_guide/license.html

 * @author		EllisLab Dev Team

 * @link		http://codeigniter.com

 * @since		Version 2.1.2

 * @filesource

 */



// ------------------------------------------------------------------------



/**

 * PDO Result Class

 *

 * This class extends the parent result class: CI_DB_result

 *

 * @category	Database

 * @author		EllisLab Dev Team

 * @link		http://codeigniter.com/user_guide/database/

 */

class CI_DB_pdo_result extends CI_DB_result {



	public $num_rows;



	/**

	 * Number of rows in the result set

	 *

	 * @return	int

	 */

	public function num_rows()

	{

		if (is_int($this->num_rows))

		{

			return $this->num_rows;

		}

		elseif (($this->num_rows = $this->result_id->rowCount()) > 0)

		{

			return $this->num_rows;

		}



		$this->num_rows = count($this->result_id->fetchAll());

		$this->result_id->execute();

		return $this->num_rows;

	}



	// --------------------------------------------------------------------



	/**

	 * Number of fields in the result set

	 *

	 * @access	public

	 * @return	integer

	 */

	function num_fields()

	{

		return $this->result_id->columnCount();

	}



	// --------------------------------------------------------------------



	/**

	 * Fetch Field Names

	 *

	 * Generates an array of column names

	 *

	 * @access	public

	 * @return	array

	 */

	function list_fields()

	{

		if ($this->db->db_debug)

		{

			return $this->db->display_error('db_unsuported_feature');

		}

		return FALSE;

	}



	// --------------------------------------------------------------------



	/**

	 * Field data

	 *

	 * Generates an array of objects containing field meta-data

	 *

	 * @access	public

	 * @return	array

	 */

	function field_data()

	{

		$data = array();

	

		try

		{

			for($i = 0; $i < $this->num_fields(); $i++)

			{

				$data[] = $this->result_id->getColumnMeta($i);

			}

			

			return $data;

		}

		catch (Exception $e)

		{

			if ($this->db->db_debug)

			{

				return $this->db->display_error('db_unsuported_feature');

			}

			return FALSE;

		}

	}



	// --------------------------------------------------------------------



	/**

	 * Free the result

	 *

	 * @return	null

	 */

	function free_result()

	{

		if (is_object($this->result_id))

		{

			$this->result_id = FALSE;

		}

	}



	// --------------------------------------------------------------------



	/**

	 * Data Seek

	 *

	 * Moves the internal pointer to the desired offset.  We call

	 * this internally before fetching results to make sure the

	 * result set starts at zero

	 *

	 * @access	private

	 * @return	array

	 */

	function _data_seek($n = 0)

	{

		return FALSE;

	}



	// --------------------------------------------------------------------



	/**

	 * Result - associative array

	 *

	 * Returns the result set as an array

	 *

	 * @access	private

	 * @return	array

	 */

	function _fetch_assoc()

	{

		return $this->result_id->fetch(PDO::FETCH_ASSOC);

	}



	// --------------------------------------------------------------------



	/**

	 * Result - object

	 *

	 * Returns the result set as an object

	 *

	 * @access	private

	 * @return	object

	 */

	function _fetch_object()

	{	

		return $this->result_id->fetchObject();

	}



}





/* End of file pdo_result.php */

/* Location: ./system/database/drivers/pdo/pdo_result.php */