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) 2006, 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         // Deprecated
00075         function field_names()
00076         {
00077                 return $this->list_fields();
00078         }
00079 
00080         // --------------------------------------------------------------------
00081 
00082         /**
00083          * Field data
00084          *
00085          * Generates an array of objects containing field meta-data
00086          *
00087          * @access      public
00088          * @return      array
00089          */
00090         function field_data()
00091         {
00092                 $retval = array();
00093                 for ($i = 0; $i < $this->num_fields(); $i++)
00094                 {
00095                         $F                              = new stdClass();
00096                         $F->name                = odbc_field_name($this->result_id, $i);
00097                         $F->type                = odbc_field_type($this->result_id, $i);
00098                         $F->max_length  = odbc_field_len($this->result_id, $i);
00099                         $F->primary_key = 0;
00100                         $F->default             = '';
00101 
00102                         $retval[] = $F;
00103                 }
00104                 
00105                 return $retval;
00106         }
00107 
00108         // --------------------------------------------------------------------
00109 
00110         /**
00111          * Free the result
00112          *
00113          * @return      null
00114          */             
00115         function free_result()
00116         {
00117                 if (is_resource($this->result_id))
00118                 {
00119                         odbc_free_result($this->result_id);
00120                         $this->result_id = FALSE;
00121                 }
00122         }
00123 
00124         // --------------------------------------------------------------------
00125 
00126         /**
00127          * Data Seek
00128          *
00129          * Moves the internal pointer to the desired offset.  We call
00130          * this internally before fetching results to make sure the
00131          * result set starts at zero
00132          *
00133          * @access      private
00134          * @return      array
00135          */
00136         function _data_seek($n = 0)
00137         {
00138                 return FALSE;
00139         }
00140 
00141         // --------------------------------------------------------------------
00142 
00143         /**
00144          * Result - associative array
00145          *
00146          * Returns the result set as an array
00147          *
00148          * @access      private
00149          * @return      array
00150          */
00151         function _fetch_assoc()
00152         {
00153                 if (function_exists('odbc_fetch_object'))
00154                 {
00155                         return odbc_fetch_array($this->result_id);
00156                 }
00157                 else
00158                 {
00159                         return $this->_odbc_fetch_array($this->result_id);
00160                 }
00161         }
00162 
00163         // --------------------------------------------------------------------
00164 
00165         /**
00166          * Result - object
00167          *
00168          * Returns the result set as an object
00169          *
00170          * @access      private
00171          * @return      object
00172          */
00173         function _fetch_object()
00174         {
00175                 if (function_exists('odbc_fetch_object'))
00176                 {
00177                         return odbc_fetch_object($this->result_id);
00178                 }
00179                 else
00180                 {
00181                         return $this->_odbc_fetch_object($this->result_id);
00182                 }
00183         }
00184 
00185 
00186         /**
00187          * Result - object
00188          *
00189          * subsititutes the odbc_fetch_object function when
00190          * not available (odbc_fetch_object requires unixODBC)
00191          *
00192          * @access      private
00193          * @return      object
00194          */
00195         function _odbc_fetch_object(& $odbc_result) {
00196                 $rs = array();
00197                 $rs_obj = false;
00198                 if (odbc_fetch_into($odbc_result, $rs)) {
00199                         foreach ($rs as $k=>$v) {
00200                                 $field_name= odbc_field_name($odbc_result, $k+1);
00201                                 $rs_obj->$field_name = $v;
00202                         }
00203                 }
00204                 return $rs_obj;
00205         }
00206 
00207 
00208         /**
00209          * Result - array
00210          *
00211          * subsititutes the odbc_fetch_array function when
00212          * not available (odbc_fetch_array requires unixODBC)
00213          *
00214          * @access      private
00215          * @return      array
00216          */
00217         function _odbc_fetch_array(& $odbc_result) {
00218                 $rs = array();
00219                 $rs_assoc = false;
00220                 if (odbc_fetch_into($odbc_result, $rs)) {
00221                         $rs_assoc=array();
00222                         foreach ($rs as $k=>$v) {
00223                                 $field_name= odbc_field_name($odbc_result, $k+1);
00224                                 $rs_assoc[$field_name] = $v;
00225                         }
00226                 }
00227                 return $rs_assoc;
00228         }
00229 
00230 }
00231 
00232 
00233 /* End of file odbc_result.php */
00234 /* Location: ./system/database/drivers/odbc/odbc_result.php */