Take two:
[www-register-wizard.git] / database / drivers / odbc / odbc_result.php
1 <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');\r
2 /**\r
3  * CodeIgniter\r
4  *\r
5  * An open source application development framework for PHP 4.3.2 or newer\r
6  *\r
7  * @package             CodeIgniter\r
8  * @author              ExpressionEngine Dev Team\r
9  * @copyright   Copyright (c) 2008, EllisLab, Inc.\r
10  * @license             http://codeigniter.com/user_guide/license.html\r
11  * @link                http://codeigniter.com\r
12  * @since               Version 1.0\r
13  * @filesource\r
14  */\r
15 \r
16 // ------------------------------------------------------------------------\r
17 \r
18 /**\r
19  * ODBC Result Class\r
20  *\r
21  * This class extends the parent result class: CI_DB_result\r
22  *\r
23  * @category    Database\r
24  * @author              ExpressionEngine Dev Team\r
25  * @link                http://codeigniter.com/user_guide/database/\r
26  */\r
27 class CI_DB_odbc_result extends CI_DB_result {\r
28         \r
29         /**\r
30          * Number of rows in the result set\r
31          *\r
32          * @access      public\r
33          * @return      integer\r
34          */\r
35         function num_rows()\r
36         {\r
37                 return @odbc_num_rows($this->result_id);\r
38         }\r
39         \r
40         // --------------------------------------------------------------------\r
41 \r
42         /**\r
43          * Number of fields in the result set\r
44          *\r
45          * @access      public\r
46          * @return      integer\r
47          */\r
48         function num_fields()\r
49         {\r
50                 return @odbc_num_fields($this->result_id);\r
51         }\r
52 \r
53         // --------------------------------------------------------------------\r
54 \r
55         /**\r
56          * Fetch Field Names\r
57          *\r
58          * Generates an array of column names\r
59          *\r
60          * @access      public\r
61          * @return      array\r
62          */\r
63         function list_fields()\r
64         {\r
65                 $field_names = array();\r
66                 for ($i = 0; $i < $this->num_fields(); $i++)\r
67                 {\r
68                         $field_names[]  = odbc_field_name($this->result_id, $i);\r
69                 }\r
70                 \r
71                 return $field_names;\r
72         }\r
73 \r
74         // --------------------------------------------------------------------\r
75 \r
76         /**\r
77          * Field data\r
78          *\r
79          * Generates an array of objects containing field meta-data\r
80          *\r
81          * @access      public\r
82          * @return      array\r
83          */\r
84         function field_data()\r
85         {\r
86                 $retval = array();\r
87                 for ($i = 0; $i < $this->num_fields(); $i++)\r
88                 {\r
89                         $F                              = new stdClass();\r
90                         $F->name                = odbc_field_name($this->result_id, $i);\r
91                         $F->type                = odbc_field_type($this->result_id, $i);\r
92                         $F->max_length  = odbc_field_len($this->result_id, $i);\r
93                         $F->primary_key = 0;\r
94                         $F->default             = '';\r
95 \r
96                         $retval[] = $F;\r
97                 }\r
98                 \r
99                 return $retval;\r
100         }\r
101 \r
102         // --------------------------------------------------------------------\r
103 \r
104         /**\r
105          * Free the result\r
106          *\r
107          * @return      null\r
108          */             \r
109         function free_result()\r
110         {\r
111                 if (is_resource($this->result_id))\r
112                 {\r
113                         odbc_free_result($this->result_id);\r
114                         $this->result_id = FALSE;\r
115                 }\r
116         }\r
117 \r
118         // --------------------------------------------------------------------\r
119 \r
120         /**\r
121          * Data Seek\r
122          *\r
123          * Moves the internal pointer to the desired offset.  We call\r
124          * this internally before fetching results to make sure the\r
125          * result set starts at zero\r
126          *\r
127          * @access      private\r
128          * @return      array\r
129          */\r
130         function _data_seek($n = 0)\r
131         {\r
132                 return FALSE;\r
133         }\r
134 \r
135         // --------------------------------------------------------------------\r
136 \r
137         /**\r
138          * Result - associative array\r
139          *\r
140          * Returns the result set as an array\r
141          *\r
142          * @access      private\r
143          * @return      array\r
144          */\r
145         function _fetch_assoc()\r
146         {\r
147                 if (function_exists('odbc_fetch_object'))\r
148                 {\r
149                         return odbc_fetch_array($this->result_id);\r
150                 }\r
151                 else\r
152                 {\r
153                         return $this->_odbc_fetch_array($this->result_id);\r
154                 }\r
155         }\r
156 \r
157         // --------------------------------------------------------------------\r
158 \r
159         /**\r
160          * Result - object\r
161          *\r
162          * Returns the result set as an object\r
163          *\r
164          * @access      private\r
165          * @return      object\r
166          */\r
167         function _fetch_object()\r
168         {\r
169                 if (function_exists('odbc_fetch_object'))\r
170                 {\r
171                         return odbc_fetch_object($this->result_id);\r
172                 }\r
173                 else\r
174                 {\r
175                         return $this->_odbc_fetch_object($this->result_id);\r
176                 }\r
177         }\r
178 \r
179 \r
180         /**\r
181          * Result - object\r
182          *\r
183          * subsititutes the odbc_fetch_object function when\r
184          * not available (odbc_fetch_object requires unixODBC)\r
185          *\r
186          * @access      private\r
187          * @return      object\r
188          */\r
189         function _odbc_fetch_object(& $odbc_result) {\r
190                 $rs = array();\r
191                 $rs_obj = false;\r
192                 if (odbc_fetch_into($odbc_result, $rs)) {\r
193                         foreach ($rs as $k=>$v) {\r
194                                 $field_name= odbc_field_name($odbc_result, $k+1);\r
195                                 $rs_obj->$field_name = $v;\r
196                         }\r
197                 }\r
198                 return $rs_obj;\r
199         }\r
200 \r
201 \r
202         /**\r
203          * Result - array\r
204          *\r
205          * subsititutes the odbc_fetch_array function when\r
206          * not available (odbc_fetch_array requires unixODBC)\r
207          *\r
208          * @access      private\r
209          * @return      array\r
210          */\r
211         function _odbc_fetch_array(& $odbc_result) {\r
212                 $rs = array();\r
213                 $rs_assoc = false;\r
214                 if (odbc_fetch_into($odbc_result, $rs)) {\r
215                         $rs_assoc=array();\r
216                         foreach ($rs as $k=>$v) {\r
217                                 $field_name= odbc_field_name($odbc_result, $k+1);\r
218                                 $rs_assoc[$field_name] = $v;\r
219                         }\r
220                 }\r
221                 return $rs_assoc;\r
222         }\r
223 \r
224 }\r
225 \r
226 \r
227 /* End of file odbc_result.php */\r
228 /* Location: ./system/database/drivers/odbc/odbc_result.php */