blob: e747044d85a1467f8a8f4da6b2f826549f38ffbb [file] [log] [blame]
Andrey Andreev24276a32012-01-08 02:44:38 +02001<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Derek Allard2067d1a2008-11-13 22:59:24 +00002/**
3 * CodeIgniter
4 *
Phil Sturgeon07c1ac82012-03-09 17:03:37 +00005 * An open source application development framework for PHP 5.2.4 or newer
Derek Allard2067d1a2008-11-13 22:59:24 +00006 *
Derek Jonesf4a4bd82011-10-20 12:18:42 -05007 * NOTICE OF LICENSE
Andrey Andreev24276a32012-01-08 02:44:38 +02008 *
Derek Jonesf4a4bd82011-10-20 12:18:42 -05009 * Licensed under the Open Software License version 3.0
Andrey Andreev24276a32012-01-08 02:44:38 +020010 *
Derek Jonesf4a4bd82011-10-20 12:18:42 -050011 * This source file is subject to the Open Software License (OSL 3.0) that is
12 * bundled with this package in the files license.txt / license.rst. It is
13 * also available through the world wide web at this URL:
14 * http://opensource.org/licenses/OSL-3.0
15 * If you did not receive a copy of the license and are unable to obtain it
16 * through the world wide web, please send an email to
17 * licensing@ellislab.com so we can send you a copy immediately.
18 *
Derek Allard2067d1a2008-11-13 22:59:24 +000019 * @package CodeIgniter
Derek Jonesf4a4bd82011-10-20 12:18:42 -050020 * @author EllisLab Dev Team
Greg Aker0defe5d2012-01-01 18:46:41 -060021 * @copyright Copyright (c) 2008 - 2012, EllisLab, Inc. (http://ellislab.com/)
Derek Jonesf4a4bd82011-10-20 12:18:42 -050022 * @license http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
Derek Allard2067d1a2008-11-13 22:59:24 +000023 * @link http://codeigniter.com
24 * @since Version 1.0
25 * @filesource
26 */
27
Derek Allard2067d1a2008-11-13 22:59:24 +000028/**
29 * Database Result Class
30 *
31 * This is the platform-independent result class.
32 * This class will not be called directly. Rather, the adapter
33 * class for the specific database will extend and instantiate it.
34 *
35 * @category Database
Derek Jonesf4a4bd82011-10-20 12:18:42 -050036 * @author EllisLab Dev Team
Derek Allard2067d1a2008-11-13 22:59:24 +000037 * @link http://codeigniter.com/user_guide/database/
38 */
Andrey Andreev6dd4aff2012-03-20 15:54:23 +020039class CI_DB_result {
Derek Allard2067d1a2008-11-13 22:59:24 +000040
Andrey Andreev5ca05132012-07-05 12:06:34 +030041 public $conn_id;
42 public $result_id;
Andrey Andreev24276a32012-01-08 02:44:38 +020043 public $result_array = array();
44 public $result_object = array();
45 public $custom_result_object = array();
46 public $current_row = 0;
Andrey Andreev5ca05132012-07-05 12:06:34 +030047 public $num_rows;
48 public $row_data;
Derek Allard2067d1a2008-11-13 22:59:24 +000049
Andrey Andreev5ca05132012-07-05 12:06:34 +030050 /**
51 * Constructor
52 *
53 * @param object
54 * @return void
55 */
Andrey Andreev57bdeb62012-03-05 15:59:16 +020056 public function __construct(&$driver_object)
57 {
58 $this->conn_id = $driver_object->conn_id;
59 $this->result_id = $driver_object->result_id;
60 }
61
Andrey Andreev5ca05132012-07-05 12:06:34 +030062 // --------------------------------------------------------------------
63
Derek Allard2067d1a2008-11-13 22:59:24 +000064 /**
Andrey Andreev5ca05132012-07-05 12:06:34 +030065 * Number of rows in the result set
Derek Allard2067d1a2008-11-13 22:59:24 +000066 *
Andrey Andreev5ca05132012-07-05 12:06:34 +030067 * @return int
68 */
69 public function num_rows()
70 {
Andrey Andreevc7db6bb2012-07-05 15:11:20 +030071 if (is_int($this->num_rows))
72 {
73 return $this->num_rows;
74 }
75 elseif (count($this->result_array) > 0)
76 {
77 return $this->num_rows = count($this->result_array);
78 }
79 elseif (count($this->result_object) > 0)
80 {
81 return $this->num_rows = count($this->result_object);
82 }
83
84 return $this->num_rows = count($this->result_array());
Andrey Andreev5ca05132012-07-05 12:06:34 +030085 }
86
87 // --------------------------------------------------------------------
88
89 /**
90 * Query result. Acts as a wrapper function for the following functions.
91 *
92 * @param string 'object', 'array' or a custom class name
93 * @return array
Barry Mienydd671972010-10-04 16:33:58 +020094 */
Andrey Andreevbc95e472011-10-20 09:44:48 +030095 public function result($type = 'object')
Barry Mienydd671972010-10-04 16:33:58 +020096 {
Andrey Andreev5ca05132012-07-05 12:06:34 +030097 if ($type === 'array')
98 {
99 return $this->result_array();
100 }
101 elseif ($type === 'object')
102 {
103 return $this->result_object();
104 }
105 else
106 {
107 return $this->custom_result_object($type);
108 }
Derek Allard2067d1a2008-11-13 22:59:24 +0000109 }
110
111 // --------------------------------------------------------------------
112
Greg Akere70e92b2011-04-25 10:50:53 -0500113 /**
114 * Custom query result.
115 *
Andrey Andreev24276a32012-01-08 02:44:38 +0200116 * @param string A string that represents the type of object you want back
117 * @return array of objects
Greg Akere70e92b2011-04-25 10:50:53 -0500118 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300119 public function custom_result_object($class_name)
Greg Akere70e92b2011-04-25 10:50:53 -0500120 {
Andrey Andreev4763c132012-07-05 13:58:18 +0300121 if (isset($this->custom_result_object[$class_name]))
Greg Akere70e92b2011-04-25 10:50:53 -0500122 {
123 return $this->custom_result_object[$class_name];
124 }
Andrey Andreev4763c132012-07-05 13:58:18 +0300125 elseif ( ! $this->result_id OR $this->num_rows === 0)
Greg Akere70e92b2011-04-25 10:50:53 -0500126 {
127 return array();
128 }
Razican114ab092011-04-25 17:26:45 +0200129
Andrey Andreev4763c132012-07-05 13:58:18 +0300130 // Don't fetch the result set again if we already have it
131 $_data = NULL;
132 if (($c = count($this->result_array)) > 0)
133 {
134 $_data = 'result_array';
135 }
136 elseif (($c = count($this->result_object)) > 0)
137 {
138 $_data = 'result_object';
139 }
140
141 if ($_data !== NULL)
142 {
143 for ($i = 0; $i < $c; $i++)
144 {
145 $this->custom_result_object[$class_name][$i] = new $class_name();
146
Andrey Andreev0db81b62012-07-08 22:00:17 +0300147 foreach ($this->{$_data}[$i] as $key => $value)
Andrey Andreev4763c132012-07-05 13:58:18 +0300148 {
149 $this->custom_result_object[$class_name][$i]->$key = $value;
150 }
151 }
152
153 return $this->custom_result_object[$class_name];
154 }
155
Greg Akere70e92b2011-04-25 10:50:53 -0500156 $this->_data_seek(0);
Andrey Andreev4763c132012-07-05 13:58:18 +0300157 $this->custom_result_object[$class_name] = array();
Greg Akere70e92b2011-04-25 10:50:53 -0500158
Andrey Andreev9a4f3562012-07-06 11:57:37 +0300159 while ($row = $this->_fetch_object($class_name))
Greg Akere70e92b2011-04-25 10:50:53 -0500160 {
Jon Ellis-Jonesc4efbdc2012-07-07 10:30:29 +0100161 $this->custom_result_object[$class_name][] = $row;
John Crepezzi7b474302011-01-15 18:17:01 -0500162 }
163
Andrey Andreev4763c132012-07-05 13:58:18 +0300164 return $this->custom_result_object[$class_name];
Greg Akere70e92b2011-04-25 10:50:53 -0500165 }
166
167 // --------------------------------------------------------------------
John Crepezzi7b474302011-01-15 18:17:01 -0500168
Derek Allard2067d1a2008-11-13 22:59:24 +0000169 /**
Andrey Andreev38b2a252012-03-29 11:35:32 +0300170 * Query result. "object" version.
Derek Allard2067d1a2008-11-13 22:59:24 +0000171 *
Andrey Andreev38b2a252012-03-29 11:35:32 +0300172 * @return array
Barry Mienydd671972010-10-04 16:33:58 +0200173 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300174 public function result_object()
Derek Allard2067d1a2008-11-13 22:59:24 +0000175 {
176 if (count($this->result_object) > 0)
177 {
178 return $this->result_object;
179 }
Barry Mienydd671972010-10-04 16:33:58 +0200180
Andrey Andreev4763c132012-07-05 13:58:18 +0300181 // In the event that query caching is on, the result_id variable
182 // will not be a valid resource so we'll simply return an empty
183 // array.
184 if ( ! $this->result_id OR $this->num_rows === 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000185 {
186 return array();
187 }
188
Andrey Andreev4763c132012-07-05 13:58:18 +0300189 if (($c = count($this->result_array)) > 0)
190 {
191 for ($i = 0; $i < $c; $i++)
192 {
193 $this->result_object[$i] = (object) $this->result_array[$i];
194 }
195
196 return $this->result_object;
197 }
198
Derek Allard2067d1a2008-11-13 22:59:24 +0000199 $this->_data_seek(0);
200 while ($row = $this->_fetch_object())
201 {
202 $this->result_object[] = $row;
203 }
Barry Mienydd671972010-10-04 16:33:58 +0200204
Derek Allard2067d1a2008-11-13 22:59:24 +0000205 return $this->result_object;
206 }
Barry Mienydd671972010-10-04 16:33:58 +0200207
Derek Allard2067d1a2008-11-13 22:59:24 +0000208 // --------------------------------------------------------------------
209
210 /**
Andrey Andreev5ca05132012-07-05 12:06:34 +0300211 * Query result. "array" version.
Derek Allard2067d1a2008-11-13 22:59:24 +0000212 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000213 * @return array
Barry Mienydd671972010-10-04 16:33:58 +0200214 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300215 public function result_array()
Derek Allard2067d1a2008-11-13 22:59:24 +0000216 {
217 if (count($this->result_array) > 0)
218 {
219 return $this->result_array;
220 }
221
Andrey Andreev4763c132012-07-05 13:58:18 +0300222 // In the event that query caching is on, the result_id variable
223 // will not be a valid resource so we'll simply return an empty
224 // array.
225 if ( ! $this->result_id OR $this->num_rows === 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000226 {
227 return array();
228 }
229
Andrey Andreev4763c132012-07-05 13:58:18 +0300230 if (($c = count($this->result_object)) > 0)
231 {
232 for ($i = 0; $i < $c; $i++)
233 {
234 $this->result_array[$i] = (array) $this->result_object[$i];
235 }
236
237 return $this->result_array;
238 }
239
Derek Allard2067d1a2008-11-13 22:59:24 +0000240 $this->_data_seek(0);
241 while ($row = $this->_fetch_assoc())
242 {
243 $this->result_array[] = $row;
244 }
Barry Mienydd671972010-10-04 16:33:58 +0200245
Derek Allard2067d1a2008-11-13 22:59:24 +0000246 return $this->result_array;
247 }
248
249 // --------------------------------------------------------------------
250
251 /**
Derek Jones37f4b9c2011-07-01 17:56:50 -0500252 * Query result. Acts as a wrapper function for the following functions.
Derek Allard2067d1a2008-11-13 22:59:24 +0000253 *
Andrey Andreev9f6bdc02012-10-22 23:31:10 +0300254 * @param mixed
Derek Allard2067d1a2008-11-13 22:59:24 +0000255 * @param string can be "object" or "array"
Andrey Andreev9f6bdc02012-10-22 23:31:10 +0300256 * @return mixed
Barry Mienydd671972010-10-04 16:33:58 +0200257 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300258 public function row($n = 0, $type = 'object')
Derek Allard2067d1a2008-11-13 22:59:24 +0000259 {
260 if ( ! is_numeric($n))
261 {
262 // We cache the row data for subsequent uses
Andrey Andreev9f6bdc02012-10-22 23:31:10 +0300263 is_array($this->row_data) OR $this->row_data = $this->row_array(0);
264
265 // array_key_exists() instead of isset() to allow for NULL values
266 if (empty($this->row_data) OR ! array_key_exists($n, $this->row_data))
Derek Allard2067d1a2008-11-13 22:59:24 +0000267 {
Andrey Andreev9f6bdc02012-10-22 23:31:10 +0300268 return NULL;
Derek Allard2067d1a2008-11-13 22:59:24 +0000269 }
Barry Mienydd671972010-10-04 16:33:58 +0200270
Andrey Andreev9f6bdc02012-10-22 23:31:10 +0300271 return $this->row_data[$n];
Derek Allard2067d1a2008-11-13 22:59:24 +0000272 }
Barry Mienydd671972010-10-04 16:33:58 +0200273
Andrey Andreev24276a32012-01-08 02:44:38 +0200274 if ($type === 'object') return $this->row_object($n);
275 elseif ($type === 'array') return $this->row_array($n);
Greg Akere70e92b2011-04-25 10:50:53 -0500276 else return $this->custom_row_object($n, $type);
Derek Allard2067d1a2008-11-13 22:59:24 +0000277 }
278
279 // --------------------------------------------------------------------
280
281 /**
282 * Assigns an item into a particular column slot
283 *
Andrey Andreev24276a32012-01-08 02:44:38 +0200284 * @return void
Barry Mienydd671972010-10-04 16:33:58 +0200285 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300286 public function set_row($key, $value = NULL)
Derek Allard2067d1a2008-11-13 22:59:24 +0000287 {
288 // We cache the row data for subsequent uses
289 if ( ! is_array($this->row_data))
290 {
291 $this->row_data = $this->row_array(0);
292 }
Barry Mienydd671972010-10-04 16:33:58 +0200293
Derek Allard2067d1a2008-11-13 22:59:24 +0000294 if (is_array($key))
295 {
296 foreach ($key as $k => $v)
297 {
298 $this->row_data[$k] = $v;
299 }
Derek Allard2067d1a2008-11-13 22:59:24 +0000300 return;
301 }
Barry Mienydd671972010-10-04 16:33:58 +0200302
Alex Bilbie48a2baf2012-06-02 11:09:54 +0100303 if ($key !== '' && ! is_null($value))
Derek Allard2067d1a2008-11-13 22:59:24 +0000304 {
305 $this->row_data[$key] = $value;
306 }
307 }
308
309 // --------------------------------------------------------------------
310
Greg Akere70e92b2011-04-25 10:50:53 -0500311 /**
John Crepezzi7b474302011-01-15 18:17:01 -0500312 * Returns a single result row - custom object version
313 *
John Crepezzi7b474302011-01-15 18:17:01 -0500314 * @return object
315 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300316 public function custom_row_object($n, $type)
John Crepezzi7b474302011-01-15 18:17:01 -0500317 {
Andrey Andreev34d67992012-07-05 14:37:36 +0300318 isset($this->custom_result_object[$type]) OR $this->custom_result_object($type);
319
320 if (count($this->custom_result_object[$type]) === 0)
John Crepezzi7b474302011-01-15 18:17:01 -0500321 {
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300322 return NULL;
John Crepezzi7b474302011-01-15 18:17:01 -0500323 }
324
Andrey Andreev34d67992012-07-05 14:37:36 +0300325 if ($n !== $this->current_row && isset($this->custom_result_object[$type][$n]))
John Crepezzi7b474302011-01-15 18:17:01 -0500326 {
327 $this->current_row = $n;
328 }
329
Andrey Andreev34d67992012-07-05 14:37:36 +0300330 return $this->custom_result_object[$type][$this->current_row];
John Crepezzi7b474302011-01-15 18:17:01 -0500331 }
332
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300333 // --------------------------------------------------------------------
334
Greg Akere70e92b2011-04-25 10:50:53 -0500335 /**
Derek Allard2067d1a2008-11-13 22:59:24 +0000336 * Returns a single result row - object version
337 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000338 * @return object
Barry Mienydd671972010-10-04 16:33:58 +0200339 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300340 public function row_object($n = 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000341 {
342 $result = $this->result_object();
Andrey Andreev24276a32012-01-08 02:44:38 +0200343 if (count($result) === 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000344 {
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300345 return NULL;
Derek Allard2067d1a2008-11-13 22:59:24 +0000346 }
347
Alex Bilbie48a2baf2012-06-02 11:09:54 +0100348 if ($n !== $this->current_row && isset($result[$n]))
Derek Allard2067d1a2008-11-13 22:59:24 +0000349 {
350 $this->current_row = $n;
351 }
352
353 return $result[$this->current_row];
354 }
355
356 // --------------------------------------------------------------------
357
358 /**
359 * Returns a single result row - array version
360 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000361 * @return array
Barry Mienydd671972010-10-04 16:33:58 +0200362 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300363 public function row_array($n = 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000364 {
365 $result = $this->result_array();
Andrey Andreev24276a32012-01-08 02:44:38 +0200366 if (count($result) === 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000367 {
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300368 return NULL;
Derek Allard2067d1a2008-11-13 22:59:24 +0000369 }
Barry Mienydd671972010-10-04 16:33:58 +0200370
Alex Bilbie48a2baf2012-06-02 11:09:54 +0100371 if ($n !== $this->current_row && isset($result[$n]))
Derek Allard2067d1a2008-11-13 22:59:24 +0000372 {
373 $this->current_row = $n;
374 }
Barry Mienydd671972010-10-04 16:33:58 +0200375
Derek Allard2067d1a2008-11-13 22:59:24 +0000376 return $result[$this->current_row];
377 }
378
Derek Allard2067d1a2008-11-13 22:59:24 +0000379 // --------------------------------------------------------------------
380
381 /**
382 * Returns the "first" row
383 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000384 * @return object
Barry Mienydd671972010-10-04 16:33:58 +0200385 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300386 public function first_row($type = 'object')
Derek Allard2067d1a2008-11-13 22:59:24 +0000387 {
388 $result = $this->result($type);
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300389 return (count($result) === 0) ? NULL : $result[0];
Derek Allard2067d1a2008-11-13 22:59:24 +0000390 }
Barry Mienydd671972010-10-04 16:33:58 +0200391
Derek Allard2067d1a2008-11-13 22:59:24 +0000392 // --------------------------------------------------------------------
393
394 /**
395 * Returns the "last" row
396 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000397 * @return object
Barry Mienydd671972010-10-04 16:33:58 +0200398 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300399 public function last_row($type = 'object')
Derek Allard2067d1a2008-11-13 22:59:24 +0000400 {
401 $result = $this->result($type);
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300402 return (count($result) === 0) ? NULL : $result[count($result) - 1];
Barry Mienydd671972010-10-04 16:33:58 +0200403 }
Derek Allard2067d1a2008-11-13 22:59:24 +0000404
405 // --------------------------------------------------------------------
406
407 /**
408 * Returns the "next" row
409 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000410 * @return object
Barry Mienydd671972010-10-04 16:33:58 +0200411 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300412 public function next_row($type = 'object')
Derek Allard2067d1a2008-11-13 22:59:24 +0000413 {
414 $result = $this->result($type);
Andrey Andreev24276a32012-01-08 02:44:38 +0200415 if (count($result) === 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000416 {
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300417 return NULL;
Derek Allard2067d1a2008-11-13 22:59:24 +0000418 }
419
420 if (isset($result[$this->current_row + 1]))
421 {
422 ++$this->current_row;
423 }
Barry Mienydd671972010-10-04 16:33:58 +0200424
Derek Allard2067d1a2008-11-13 22:59:24 +0000425 return $result[$this->current_row];
426 }
Barry Mienydd671972010-10-04 16:33:58 +0200427
Derek Allard2067d1a2008-11-13 22:59:24 +0000428 // --------------------------------------------------------------------
429
430 /**
431 * Returns the "previous" row
432 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000433 * @return object
Barry Mienydd671972010-10-04 16:33:58 +0200434 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300435 public function previous_row($type = 'object')
Derek Allard2067d1a2008-11-13 22:59:24 +0000436 {
437 $result = $this->result($type);
Andrey Andreev24276a32012-01-08 02:44:38 +0200438 if (count($result) === 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000439 {
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300440 return NULL;
Derek Allard2067d1a2008-11-13 22:59:24 +0000441 }
442
443 if (isset($result[$this->current_row - 1]))
444 {
445 --$this->current_row;
446 }
447 return $result[$this->current_row];
448 }
449
450 // --------------------------------------------------------------------
451
452 /**
Juan Ignacio Borda3020b242012-05-18 18:27:50 -0300453 * Returns an unbuffered row and move pointer to next row
454 *
Andrey Andreev9a4f3562012-07-06 11:57:37 +0300455 * @param string 'array', 'object' or a custom class name
Juan Ignacio Bordafece8842012-05-19 09:33:07 -0300456 * @return mixed either a result object or array
Juan Ignacio Borda3020b242012-05-18 18:27:50 -0300457 */
458 public function unbuffered_row($type = 'object')
459 {
Andrey Andreev9a4f3562012-07-06 11:57:37 +0300460 if ($type === 'array')
461 {
462 return $this->_fetch_assoc();
463 }
464 elseif ($type === 'object')
465 {
466 return $this->_fetch_object();
467 }
468
469 return $this->_fetch_object($type);
Juan Ignacio Borda3020b242012-05-18 18:27:50 -0300470 }
471
472 // --------------------------------------------------------------------
Andrey Andreev79922c02012-05-23 12:27:17 +0300473
Juan Ignacio Borda3020b242012-05-18 18:27:50 -0300474 /**
Derek Allard2067d1a2008-11-13 22:59:24 +0000475 * The following functions are normally overloaded by the identically named
476 * methods in the platform-specific driver -- except when query caching
Andrey Andreev38b2a252012-03-29 11:35:32 +0300477 * is used. When caching is enabled we do not load the other driver.
Derek Allard2067d1a2008-11-13 22:59:24 +0000478 * These functions are primarily here to prevent undefined function errors
Andrey Andreev38b2a252012-03-29 11:35:32 +0300479 * when a cached result object is in use. They are not otherwise fully
Derek Allard2067d1a2008-11-13 22:59:24 +0000480 * operational due to the unavailability of the database resource IDs with
481 * cached results.
482 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300483 public function num_fields() { return 0; }
484 public function list_fields() { return array(); }
485 public function field_data() { return array(); }
Andrey Andreev38b2a252012-03-29 11:35:32 +0300486 public function free_result() { $this->result_id = FALSE; }
Andrey Andreev8f3566f2012-04-12 14:30:05 +0300487 protected function _data_seek() { return FALSE; }
Andrey Andreevbc95e472011-10-20 09:44:48 +0300488 protected function _fetch_assoc() { return array(); }
489 protected function _fetch_object() { return array(); }
Barry Mienydd671972010-10-04 16:33:58 +0200490
Derek Allard2067d1a2008-11-13 22:59:24 +0000491}
Derek Allard2067d1a2008-11-13 22:59:24 +0000492
493/* End of file DB_result.php */
Timothy Warren215890b2012-03-20 09:38:16 -0400494/* Location: ./system/database/DB_result.php */