odbc_result.php

Go to the documentation of this file.
00001 <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
00002 /**
00003  * CodeIgniter
00004  *
00005  * An open source application development framework for PHP 4.3.2 or newer
00006  *
00007  * @package             CodeIgniter
00008  * @author              ExpressionEngine Dev Team
00009  * @copyright   Copyright (c) 2008, EllisLab, Inc.
00010  * @license             http://codeigniter.com/user_guide/license.html
00011  * @link                http://codeigniter.com
00012  * @since               Version 1.0
00013  * @filesource
00014  */
00015 
00016 // ------------------------------------------------------------------------
00017 
00018 /**
00019  * ODBC Result Class
00020  *
00021  * This class extends the parent result class: CI_DB_result
00022  *
00023  * @category    Database
00024  * @author              ExpressionEngine Dev Team
00025  * @link                http://codeigniter.com/user_guide/database/
00026  */
00027 class CI_DB_odbc_result extends CI_DB_result {
00028         
00029         /**
00030          * Number of rows in the result set
00031          *
00032          * @access      public
00033          * @return      integer
00034          */
00035         function num_rows()
00036         {
00037                 return @odbc_num_rows($this->result_id);
00038         }
00039         
00040         // --------------------------------------------------------------------
00041 
00042         /**
00043          * Number of fields in the result set
00044          *
00045          * @access      public
00046          * @return      integer
00047          */
00048         function num_fields()
00049         {
00050                 return @odbc_num_fields($this->result_id);
00051         }
00052 
00053         // --------------------------------------------------------------------
00054 
00055         /**
00056          * Fetch Field Names
00057          *
00058          * Generates an array of column names
00059          *
00060          * @access      public
00061          * @return      array
00062          */
00063         function list_fields()
00064         {
00065                 $field_names = array();
00066                 for ($i = 0; $i < $this->num_fields(); $i++)
00067                 {
00068                         $field_names[]  = odbc_field_name($this->result_id, $i);
00069                 }
00070                 
00071                 return $field_names;
00072         }
00073 
00074         // --------------------------------------------------------------------
00075 
00076         /**
00077          * Field data
00078          *
00079          * Generates an array of objects containing field meta-data
00080          *
00081          * @access      public
00082          * @return      array
00083          */
00084         function field_data()
00085         {
00086                 $retval = array();
00087                 for ($i = 0; $i < $this->num_fields(); $i++)
00088                 {
00089                         $F                              = new stdClass();
00090                         $F->name                = odbc_field_name($this->result_id, $i);
00091                         $F->type                = odbc_field_type($this->result_id, $i);
00092                         $F->max_length  = odbc_field_len($this->result_id, $i);
00093                         $F->primary_key = 0;
00094                         $F->default             = '';
00095 
00096                         $retval[] = $F;
00097                 }
00098                 
00099                 return $retval;
00100         }
00101 
00102         // --------------------------------------------------------------------
00103 
00104         /**
00105          * Free the result
00106          *
00107          * @return      null
00108          */             
00109         function free_result()
00110         {
00111                 if (is_resource($this->result_id))
00112                 {
00113                         odbc_free_result($this->result_id);
00114                         $this->result_id = FALSE;
00115                 }
00116         }
00117 
00118         // --------------------------------------------------------------------
00119 
00120         /**
00121          * Data Seek
00122          *
00123          * Moves the internal pointer to the desired offset.  We call
00124          * this internally before fetching results to make sure the
00125          * result set starts at zero
00126          *
00127          * @access      private
00128          * @return      array
00129          */
00130         function _data_seek($n = 0)
00131         {
00132                 return FALSE;
00133         }
00134 
00135         // --------------------------------------------------------------------
00136 
00137         /**
00138          * Result - associative array
00139          *
00140          * Returns the result set as an array
00141          *
00142          * @access      private
00143          * @return      array
00144          */
00145         function _fetch_assoc()
00146         {
00147                 if (function_exists('odbc_fetch_object'))
00148                 {
00149                         return odbc_fetch_array($this->result_id);
00150                 }
00151                 else
00152                 {
00153                         return $this->_odbc_fetch_array($this->result_id);
00154                 }
00155         }
00156 
00157         // --------------------------------------------------------------------
00158 
00159         /**
00160          * Result - object
00161          *
00162          * Returns the result set as an object
00163          *
00164          * @access      private
00165          * @return      object
00166          */
00167         function _fetch_object()
00168         {
00169                 if (function_exists('odbc_fetch_object'))
00170                 {
00171                         return odbc_fetch_object($this->result_id);
00172                 }
00173                 else
00174                 {
00175                         return $this->_odbc_fetch_object($this->result_id);
00176                 }
00177         }
00178 
00179 
00180         /**
00181          * Result - object
00182          *
00183          * subsititutes the odbc_fetch_object function when
00184          * not available (odbc_fetch_object requires unixODBC)
00185          *
00186          * @access      private
00187          * @return      object
00188          */
00189         function _odbc_fetch_object(& $odbc_result) {
00190                 $rs = array();
00191                 $rs_obj = false;
00192                 if (odbc_fetch_into($odbc_result, $rs)) {
00193                         foreach ($rs as $k=>$v) {
00194                                 $field_name= odbc_field_name($odbc_result, $k+1);
00195                                 $rs_obj->$field_name = $v;
00196                         }
00197                 }
00198                 return $rs_obj;
00199         }
00200 
00201 
00202         /**
00203          * Result - array
00204          *
00205          * subsititutes the odbc_fetch_array function when
00206          * not available (odbc_fetch_array requires unixODBC)
00207          *
00208          * @access      private
00209          * @return      array
00210          */
00211         function _odbc_fetch_array(& $odbc_result) {
00212                 $rs = array();
00213                 $rs_assoc = false;
00214                 if (odbc_fetch_into($odbc_result, $rs)) {
00215                         $rs_assoc=array();
00216                         foreach ($rs as $k=>$v) {
00217                                 $field_name= odbc_field_name($odbc_result, $k+1);
00218                                 $rs_assoc[$field_name] = $v;
00219                         }
00220                 }
00221                 return $rs_assoc;
00222         }
00223 
00224 }
00225 
00226 
00227 /* End of file odbc_result.php */
00228 /* Location: ./system/database/drivers/odbc/odbc_result.php */