Blame | Last modification | View Log | RSS feed
<?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* @author Esen Sagynov* @copyright Copyright (c) 2008 - 2011, EllisLab, Inc.* @license http://codeigniter.com/user_guide/license.html* @link http://codeigniter.com* @since Version 2.0.2* @filesource*/// --------------------------------------------------------------------/*** CUBRID Result Class** This class extends the parent result class: CI_DB_result** @category Database* @author Esen Sagynov* @link http://codeigniter.com/user_guide/database/*/class CI_DB_cubrid_result extends CI_DB_result {/*** Number of rows in the result set** @access public* @return integer*/function num_rows(){return @cubrid_num_rows($this->result_id);}// --------------------------------------------------------------------/*** Number of fields in the result set** @access public* @return integer*/function num_fields(){return @cubrid_num_fields($this->result_id);}// --------------------------------------------------------------------/*** Fetch Field Names** Generates an array of column names** @access public* @return array*/function list_fields(){return cubrid_column_names($this->result_id);}// --------------------------------------------------------------------/*** Field data** Generates an array of objects containing field meta-data** @access public* @return array*/function field_data(){$retval = array();$tablePrimaryKeys = array();while ($field = cubrid_fetch_field($this->result_id)){$F = new stdClass();$F->name = $field->name;$F->type = $field->type;$F->default = $field->def;$F->max_length = $field->max_length;// At this moment primary_key property is not returned when// cubrid_fetch_field is called. The following code will// provide a patch for it. primary_key property will be added// in the next release.// TODO: later version of CUBRID will provide primary_key// property.// When PK is defined in CUBRID, an index is automatically// created in the db_index system table in the form of// pk_tblname_fieldname. So the following will count how many// columns are there which satisfy this format.// The query will search for exact single columns, thus// compound PK is not supported.$res = cubrid_query($this->conn_id,"SELECT COUNT(*) FROM db_index WHERE class_name = '" . $field->table ."' AND is_primary_key = 'YES' AND index_name = 'pk_" .$field->table . "_" . $field->name . "'");if ($res){$row = cubrid_fetch_array($res, CUBRID_NUM);$F->primary_key = ($row[0] > 0 ? 1 : null);}else{$F->primary_key = null;}if (is_resource($res)){cubrid_close_request($res);$this->result_id = FALSE;}$retval[] = $F;}return $retval;}// --------------------------------------------------------------------/*** Free the result** @return null*/function free_result(){if(is_resource($this->result_id) ||get_resource_type($this->result_id) == "Unknown" &&preg_match('/Resource id #/', strval($this->result_id))){cubrid_close_request($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 cubrid_data_seek($this->result_id, $n);}// --------------------------------------------------------------------/*** Result - associative array** Returns the result set as an array** @access private* @return array*/function _fetch_assoc(){return cubrid_fetch_assoc($this->result_id);}// --------------------------------------------------------------------/*** Result - object** Returns the result set as an object** @access private* @return object*/function _fetch_object(){return cubrid_fetch_object($this->result_id);}}/* End of file cubrid_result.php *//* Location: ./system/database/drivers/cubrid/cubrid_result.php */