blob: ee0b612014628f4b907897dcd24ecb7affa30c76 [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
147 foreach ($this->$_data as $key => $value)
148 {
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
John Crepezzi7b474302011-01-15 18:17:01 -0500159 while ($row = $this->_fetch_object())
Greg Akere70e92b2011-04-25 10:50:53 -0500160 {
161 $object = new $class_name();
Greg Akere70e92b2011-04-25 10:50:53 -0500162 foreach ($row as $key => $value)
163 {
164 $object->$key = $value;
165 }
Andrey Andreevbc95e472011-10-20 09:44:48 +0300166
Andrey Andreev4763c132012-07-05 13:58:18 +0300167 $custom_result_object[$class_name][] = $object;
John Crepezzi7b474302011-01-15 18:17:01 -0500168 }
169
Andrey Andreev4763c132012-07-05 13:58:18 +0300170 return $this->custom_result_object[$class_name];
Greg Akere70e92b2011-04-25 10:50:53 -0500171 }
172
173 // --------------------------------------------------------------------
John Crepezzi7b474302011-01-15 18:17:01 -0500174
Derek Allard2067d1a2008-11-13 22:59:24 +0000175 /**
Andrey Andreev38b2a252012-03-29 11:35:32 +0300176 * Query result. "object" version.
Derek Allard2067d1a2008-11-13 22:59:24 +0000177 *
Andrey Andreev38b2a252012-03-29 11:35:32 +0300178 * @return array
Barry Mienydd671972010-10-04 16:33:58 +0200179 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300180 public function result_object()
Derek Allard2067d1a2008-11-13 22:59:24 +0000181 {
182 if (count($this->result_object) > 0)
183 {
184 return $this->result_object;
185 }
Barry Mienydd671972010-10-04 16:33:58 +0200186
Andrey Andreev4763c132012-07-05 13:58:18 +0300187 // In the event that query caching is on, the result_id variable
188 // will not be a valid resource so we'll simply return an empty
189 // array.
190 if ( ! $this->result_id OR $this->num_rows === 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000191 {
192 return array();
193 }
194
Andrey Andreev4763c132012-07-05 13:58:18 +0300195 if (($c = count($this->result_array)) > 0)
196 {
197 for ($i = 0; $i < $c; $i++)
198 {
199 $this->result_object[$i] = (object) $this->result_array[$i];
200 }
201
202 return $this->result_object;
203 }
204
Derek Allard2067d1a2008-11-13 22:59:24 +0000205 $this->_data_seek(0);
206 while ($row = $this->_fetch_object())
207 {
208 $this->result_object[] = $row;
209 }
Barry Mienydd671972010-10-04 16:33:58 +0200210
Derek Allard2067d1a2008-11-13 22:59:24 +0000211 return $this->result_object;
212 }
Barry Mienydd671972010-10-04 16:33:58 +0200213
Derek Allard2067d1a2008-11-13 22:59:24 +0000214 // --------------------------------------------------------------------
215
216 /**
Andrey Andreev5ca05132012-07-05 12:06:34 +0300217 * Query result. "array" version.
Derek Allard2067d1a2008-11-13 22:59:24 +0000218 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000219 * @return array
Barry Mienydd671972010-10-04 16:33:58 +0200220 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300221 public function result_array()
Derek Allard2067d1a2008-11-13 22:59:24 +0000222 {
223 if (count($this->result_array) > 0)
224 {
225 return $this->result_array;
226 }
227
Andrey Andreev4763c132012-07-05 13:58:18 +0300228 // In the event that query caching is on, the result_id variable
229 // will not be a valid resource so we'll simply return an empty
230 // array.
231 if ( ! $this->result_id OR $this->num_rows === 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000232 {
233 return array();
234 }
235
Andrey Andreev4763c132012-07-05 13:58:18 +0300236 if (($c = count($this->result_object)) > 0)
237 {
238 for ($i = 0; $i < $c; $i++)
239 {
240 $this->result_array[$i] = (array) $this->result_object[$i];
241 }
242
243 return $this->result_array;
244 }
245
Derek Allard2067d1a2008-11-13 22:59:24 +0000246 $this->_data_seek(0);
247 while ($row = $this->_fetch_assoc())
248 {
249 $this->result_array[] = $row;
250 }
Barry Mienydd671972010-10-04 16:33:58 +0200251
Derek Allard2067d1a2008-11-13 22:59:24 +0000252 return $this->result_array;
253 }
254
255 // --------------------------------------------------------------------
256
257 /**
Derek Jones37f4b9c2011-07-01 17:56:50 -0500258 * Query result. Acts as a wrapper function for the following functions.
Derek Allard2067d1a2008-11-13 22:59:24 +0000259 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000260 * @param string
261 * @param string can be "object" or "array"
Barry Mienydd671972010-10-04 16:33:58 +0200262 * @return mixed either a result object or array
263 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300264 public function row($n = 0, $type = 'object')
Derek Allard2067d1a2008-11-13 22:59:24 +0000265 {
266 if ( ! is_numeric($n))
267 {
268 // We cache the row data for subsequent uses
269 if ( ! is_array($this->row_data))
270 {
271 $this->row_data = $this->row_array(0);
272 }
Barry Mienydd671972010-10-04 16:33:58 +0200273
Derek Allard2067d1a2008-11-13 22:59:24 +0000274 // array_key_exists() instead of isset() to allow for MySQL NULL values
275 if (array_key_exists($n, $this->row_data))
276 {
277 return $this->row_data[$n];
278 }
Barry Mienydd671972010-10-04 16:33:58 +0200279 // reset the $n variable if the result was not achieved
Derek Allard2067d1a2008-11-13 22:59:24 +0000280 $n = 0;
281 }
Barry Mienydd671972010-10-04 16:33:58 +0200282
Andrey Andreev24276a32012-01-08 02:44:38 +0200283 if ($type === 'object') return $this->row_object($n);
284 elseif ($type === 'array') return $this->row_array($n);
Greg Akere70e92b2011-04-25 10:50:53 -0500285 else return $this->custom_row_object($n, $type);
Derek Allard2067d1a2008-11-13 22:59:24 +0000286 }
287
288 // --------------------------------------------------------------------
289
290 /**
291 * Assigns an item into a particular column slot
292 *
Andrey Andreev24276a32012-01-08 02:44:38 +0200293 * @return void
Barry Mienydd671972010-10-04 16:33:58 +0200294 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300295 public function set_row($key, $value = NULL)
Derek Allard2067d1a2008-11-13 22:59:24 +0000296 {
297 // We cache the row data for subsequent uses
298 if ( ! is_array($this->row_data))
299 {
300 $this->row_data = $this->row_array(0);
301 }
Barry Mienydd671972010-10-04 16:33:58 +0200302
Derek Allard2067d1a2008-11-13 22:59:24 +0000303 if (is_array($key))
304 {
305 foreach ($key as $k => $v)
306 {
307 $this->row_data[$k] = $v;
308 }
Derek Allard2067d1a2008-11-13 22:59:24 +0000309 return;
310 }
Barry Mienydd671972010-10-04 16:33:58 +0200311
Alex Bilbie48a2baf2012-06-02 11:09:54 +0100312 if ($key !== '' && ! is_null($value))
Derek Allard2067d1a2008-11-13 22:59:24 +0000313 {
314 $this->row_data[$key] = $value;
315 }
316 }
317
318 // --------------------------------------------------------------------
319
Greg Akere70e92b2011-04-25 10:50:53 -0500320 /**
John Crepezzi7b474302011-01-15 18:17:01 -0500321 * Returns a single result row - custom object version
322 *
John Crepezzi7b474302011-01-15 18:17:01 -0500323 * @return object
324 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300325 public function custom_row_object($n, $type)
John Crepezzi7b474302011-01-15 18:17:01 -0500326 {
Andrey Andreev34d67992012-07-05 14:37:36 +0300327 isset($this->custom_result_object[$type]) OR $this->custom_result_object($type);
328
329 if (count($this->custom_result_object[$type]) === 0)
John Crepezzi7b474302011-01-15 18:17:01 -0500330 {
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300331 return NULL;
John Crepezzi7b474302011-01-15 18:17:01 -0500332 }
333
Andrey Andreev34d67992012-07-05 14:37:36 +0300334 if ($n !== $this->current_row && isset($this->custom_result_object[$type][$n]))
John Crepezzi7b474302011-01-15 18:17:01 -0500335 {
336 $this->current_row = $n;
337 }
338
Andrey Andreev34d67992012-07-05 14:37:36 +0300339 return $this->custom_result_object[$type][$this->current_row];
John Crepezzi7b474302011-01-15 18:17:01 -0500340 }
341
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300342 // --------------------------------------------------------------------
343
Greg Akere70e92b2011-04-25 10:50:53 -0500344 /**
Derek Allard2067d1a2008-11-13 22:59:24 +0000345 * Returns a single result row - object version
346 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000347 * @return object
Barry Mienydd671972010-10-04 16:33:58 +0200348 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300349 public function row_object($n = 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000350 {
351 $result = $this->result_object();
Andrey Andreev24276a32012-01-08 02:44:38 +0200352 if (count($result) === 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000353 {
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300354 return NULL;
Derek Allard2067d1a2008-11-13 22:59:24 +0000355 }
356
Alex Bilbie48a2baf2012-06-02 11:09:54 +0100357 if ($n !== $this->current_row && isset($result[$n]))
Derek Allard2067d1a2008-11-13 22:59:24 +0000358 {
359 $this->current_row = $n;
360 }
361
362 return $result[$this->current_row];
363 }
364
365 // --------------------------------------------------------------------
366
367 /**
368 * Returns a single result row - array version
369 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000370 * @return array
Barry Mienydd671972010-10-04 16:33:58 +0200371 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300372 public function row_array($n = 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000373 {
374 $result = $this->result_array();
Andrey Andreev24276a32012-01-08 02:44:38 +0200375 if (count($result) === 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000376 {
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300377 return NULL;
Derek Allard2067d1a2008-11-13 22:59:24 +0000378 }
Barry Mienydd671972010-10-04 16:33:58 +0200379
Alex Bilbie48a2baf2012-06-02 11:09:54 +0100380 if ($n !== $this->current_row && isset($result[$n]))
Derek Allard2067d1a2008-11-13 22:59:24 +0000381 {
382 $this->current_row = $n;
383 }
Barry Mienydd671972010-10-04 16:33:58 +0200384
Derek Allard2067d1a2008-11-13 22:59:24 +0000385 return $result[$this->current_row];
386 }
387
Derek Allard2067d1a2008-11-13 22:59:24 +0000388 // --------------------------------------------------------------------
389
390 /**
391 * Returns the "first" row
392 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000393 * @return object
Barry Mienydd671972010-10-04 16:33:58 +0200394 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300395 public function first_row($type = 'object')
Derek Allard2067d1a2008-11-13 22:59:24 +0000396 {
397 $result = $this->result($type);
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300398 return (count($result) === 0) ? NULL : $result[0];
Derek Allard2067d1a2008-11-13 22:59:24 +0000399 }
Barry Mienydd671972010-10-04 16:33:58 +0200400
Derek Allard2067d1a2008-11-13 22:59:24 +0000401 // --------------------------------------------------------------------
402
403 /**
404 * Returns the "last" row
405 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000406 * @return object
Barry Mienydd671972010-10-04 16:33:58 +0200407 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300408 public function last_row($type = 'object')
Derek Allard2067d1a2008-11-13 22:59:24 +0000409 {
410 $result = $this->result($type);
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300411 return (count($result) === 0) ? NULL : $result[count($result) - 1];
Barry Mienydd671972010-10-04 16:33:58 +0200412 }
Derek Allard2067d1a2008-11-13 22:59:24 +0000413
414 // --------------------------------------------------------------------
415
416 /**
417 * Returns the "next" row
418 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000419 * @return object
Barry Mienydd671972010-10-04 16:33:58 +0200420 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300421 public function next_row($type = 'object')
Derek Allard2067d1a2008-11-13 22:59:24 +0000422 {
423 $result = $this->result($type);
Andrey Andreev24276a32012-01-08 02:44:38 +0200424 if (count($result) === 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000425 {
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300426 return NULL;
Derek Allard2067d1a2008-11-13 22:59:24 +0000427 }
428
429 if (isset($result[$this->current_row + 1]))
430 {
431 ++$this->current_row;
432 }
Barry Mienydd671972010-10-04 16:33:58 +0200433
Derek Allard2067d1a2008-11-13 22:59:24 +0000434 return $result[$this->current_row];
435 }
Barry Mienydd671972010-10-04 16:33:58 +0200436
Derek Allard2067d1a2008-11-13 22:59:24 +0000437 // --------------------------------------------------------------------
438
439 /**
440 * Returns the "previous" row
441 *
Derek Allard2067d1a2008-11-13 22:59:24 +0000442 * @return object
Barry Mienydd671972010-10-04 16:33:58 +0200443 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300444 public function previous_row($type = 'object')
Derek Allard2067d1a2008-11-13 22:59:24 +0000445 {
446 $result = $this->result($type);
Andrey Andreev24276a32012-01-08 02:44:38 +0200447 if (count($result) === 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000448 {
Andrey Andreev55d3ad42012-05-24 22:13:06 +0300449 return NULL;
Derek Allard2067d1a2008-11-13 22:59:24 +0000450 }
451
452 if (isset($result[$this->current_row - 1]))
453 {
454 --$this->current_row;
455 }
456 return $result[$this->current_row];
457 }
458
459 // --------------------------------------------------------------------
460
461 /**
Juan Ignacio Borda3020b242012-05-18 18:27:50 -0300462 * Returns an unbuffered row and move pointer to next row
463 *
Juan Ignacio Bordafece8842012-05-19 09:33:07 -0300464 * @return mixed either a result object or array
Juan Ignacio Borda3020b242012-05-18 18:27:50 -0300465 */
466 public function unbuffered_row($type = 'object')
467 {
Juan Ignacio Bordafece8842012-05-19 09:33:07 -0300468 return ($type !== 'array') ? $this->_fetch_object() : $this->_fetch_assoc();
Juan Ignacio Borda3020b242012-05-18 18:27:50 -0300469 }
470
471 // --------------------------------------------------------------------
Andrey Andreev79922c02012-05-23 12:27:17 +0300472
Juan Ignacio Borda3020b242012-05-18 18:27:50 -0300473 /**
Derek Allard2067d1a2008-11-13 22:59:24 +0000474 * The following functions are normally overloaded by the identically named
475 * methods in the platform-specific driver -- except when query caching
Andrey Andreev38b2a252012-03-29 11:35:32 +0300476 * is used. When caching is enabled we do not load the other driver.
Derek Allard2067d1a2008-11-13 22:59:24 +0000477 * These functions are primarily here to prevent undefined function errors
Andrey Andreev38b2a252012-03-29 11:35:32 +0300478 * when a cached result object is in use. They are not otherwise fully
Derek Allard2067d1a2008-11-13 22:59:24 +0000479 * operational due to the unavailability of the database resource IDs with
480 * cached results.
481 */
Andrey Andreevbc95e472011-10-20 09:44:48 +0300482 public function num_fields() { return 0; }
483 public function list_fields() { return array(); }
484 public function field_data() { return array(); }
Andrey Andreev38b2a252012-03-29 11:35:32 +0300485 public function free_result() { $this->result_id = FALSE; }
Andrey Andreev8f3566f2012-04-12 14:30:05 +0300486 protected function _data_seek() { return FALSE; }
Andrey Andreevbc95e472011-10-20 09:44:48 +0300487 protected function _fetch_assoc() { return array(); }
488 protected function _fetch_object() { return array(); }
Barry Mienydd671972010-10-04 16:33:58 +0200489
Derek Allard2067d1a2008-11-13 22:59:24 +0000490}
Derek Allard2067d1a2008-11-13 22:59:24 +0000491
492/* End of file DB_result.php */
Timothy Warren215890b2012-03-20 09:38:16 -0400493/* Location: ./system/database/DB_result.php */