blob: b548f32ff08022120b6a6080d455b9e096f1f512 [file] [log] [blame]
Andrey Andreevc5536aa2012-11-01 17:33:58 +02001<?php
Timothy Warren76e04352012-02-14 11:55:17 -05002/**
3 * CodeIgniter
4 *
Andrey Andreevfe9309d2015-01-09 17:48:58 +02005 * An open source application development framework for PHP
Timothy Warren76e04352012-02-14 11:55:17 -05006 *
Andrey Andreevbdb96ca2014-10-28 00:13:31 +02007 * This content is released under the MIT License (MIT)
Timothy Warren817af192012-02-16 08:28:00 -05008 *
Andrey Andreevcce6bd12018-01-09 11:32:02 +02009 * Copyright (c) 2014 - 2018, British Columbia Institute of Technology
Timothy Warren817af192012-02-16 08:28:00 -050010 *
Andrey Andreevbdb96ca2014-10-28 00:13:31 +020011 * Permission is hereby granted, free of charge, to any person obtaining a copy
12 * of this software and associated documentation files (the "Software"), to deal
13 * in the Software without restriction, including without limitation the rights
14 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 * copies of the Software, and to permit persons to whom the Software is
16 * furnished to do so, subject to the following conditions:
Timothy Warren76e04352012-02-14 11:55:17 -050017 *
Andrey Andreevbdb96ca2014-10-28 00:13:31 +020018 * The above copyright notice and this permission notice shall be included in
19 * all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 * THE SOFTWARE.
28 *
29 * @package CodeIgniter
30 * @author EllisLab Dev Team
Andrey Andreev1924e872016-01-11 12:55:34 +020031 * @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
Andrey Andreevcce6bd12018-01-09 11:32:02 +020032 * @copyright Copyright (c) 2014 - 2018, British Columbia Institute of Technology (http://bcit.ca/)
Andrey Andreevbdb96ca2014-10-28 00:13:31 +020033 * @license http://opensource.org/licenses/MIT MIT License
Andrey Andreevbd202c92016-01-11 12:50:18 +020034 * @link https://codeigniter.com
Andrey Andreevbdb96ca2014-10-28 00:13:31 +020035 * @since Version 3.0.0
Timothy Warren76e04352012-02-14 11:55:17 -050036 * @filesource
37 */
Andrey Andreevc5536aa2012-11-01 17:33:58 +020038defined('BASEPATH') OR exit('No direct script access allowed');
Timothy Warren76e04352012-02-14 11:55:17 -050039
Timothy Warren76e04352012-02-14 11:55:17 -050040/**
41 * Interbase/Firebird Result Class
42 *
43 * This class extends the parent result class: CI_DB_result
44 *
45 * @category Database
46 * @author EllisLab Dev Team
Andrey Andreevbd202c92016-01-11 12:50:18 +020047 * @link https://codeigniter.com/user_guide/database/
Timothy Warren76e04352012-02-14 11:55:17 -050048 */
Andrey Andreev26086872012-07-05 11:21:58 +030049class CI_DB_ibase_result extends CI_DB_result {
Timothy Warren76e04352012-02-14 11:55:17 -050050
51 /**
Timothy Warren76e04352012-02-14 11:55:17 -050052 * Number of fields in the result set
53 *
Andrey Andreev60c9c992012-03-20 23:46:09 +020054 * @return int
Timothy Warren76e04352012-02-14 11:55:17 -050055 */
Timothy Warren4be822b2012-02-14 12:07:34 -050056 public function num_fields()
Timothy Warren76e04352012-02-14 11:55:17 -050057 {
Andrey Andreev2bbbd1a2014-05-09 10:24:14 +030058 return ibase_num_fields($this->result_id);
Timothy Warren76e04352012-02-14 11:55:17 -050059 }
60
61 // --------------------------------------------------------------------
62
63 /**
64 * Fetch Field Names
65 *
66 * Generates an array of column names
67 *
Timothy Warren76e04352012-02-14 11:55:17 -050068 * @return array
69 */
Timothy Warren4be822b2012-02-14 12:07:34 -050070 public function list_fields()
Timothy Warren76e04352012-02-14 11:55:17 -050071 {
72 $field_names = array();
Timothy Warren2da66ed2012-02-20 17:54:39 -050073 for ($i = 0, $num_fields = $this->num_fields(); $i < $num_fields; $i++)
Timothy Warren76e04352012-02-14 11:55:17 -050074 {
75 $info = ibase_field_info($this->result_id, $i);
76 $field_names[] = $info['name'];
77 }
78
79 return $field_names;
80 }
81
82 // --------------------------------------------------------------------
83
84 /**
85 * Field data
86 *
87 * Generates an array of objects containing field meta-data
88 *
Timothy Warren76e04352012-02-14 11:55:17 -050089 * @return array
90 */
Timothy Warren4be822b2012-02-14 12:07:34 -050091 public function field_data()
Timothy Warren76e04352012-02-14 11:55:17 -050092 {
Timothy Warren76e04352012-02-14 11:55:17 -050093 $retval = array();
Andrey Andreev60c9c992012-03-20 23:46:09 +020094 for ($i = 0, $c = $this->num_fields(); $i < $c; $i++)
Timothy Warren76e04352012-02-14 11:55:17 -050095 {
96 $info = ibase_field_info($this->result_id, $i);
Timothy Warren76e04352012-02-14 11:55:17 -050097
Andrey Andreev60c9c992012-03-20 23:46:09 +020098 $retval[$i] = new stdClass();
99 $retval[$i]->name = $info['name'];
100 $retval[$i]->type = $info['type'];
101 $retval[$i]->max_length = $info['length'];
Timothy Warren76e04352012-02-14 11:55:17 -0500102 }
103
104 return $retval;
105 }
106
107 // --------------------------------------------------------------------
108
109 /**
110 * Free the result
111 *
Andrey Andreev60c9c992012-03-20 23:46:09 +0200112 * @return void
Timothy Warren76e04352012-02-14 11:55:17 -0500113 */
Timothy Warren4be822b2012-02-14 12:07:34 -0500114 public function free_result()
Timothy Warren76e04352012-02-14 11:55:17 -0500115 {
Andrey Andreev2bbbd1a2014-05-09 10:24:14 +0300116 ibase_free_result($this->result_id);
Timothy Warren76e04352012-02-14 11:55:17 -0500117 }
118
119 // --------------------------------------------------------------------
120
121 /**
Timothy Warren76e04352012-02-14 11:55:17 -0500122 * Result - associative array
123 *
124 * Returns the result set as an array
125 *
Timothy Warren76e04352012-02-14 11:55:17 -0500126 * @return array
127 */
Timothy Warren95562142012-02-20 17:37:21 -0500128 protected function _fetch_assoc()
Timothy Warren76e04352012-02-14 11:55:17 -0500129 {
Andrey Andreev2bbbd1a2014-05-09 10:24:14 +0300130 return ibase_fetch_assoc($this->result_id, IBASE_FETCH_BLOBS);
Timothy Warren76e04352012-02-14 11:55:17 -0500131 }
132
133 // --------------------------------------------------------------------
134
135 /**
136 * Result - object
137 *
138 * Returns the result set as an object
139 *
Andrey Andreev8463b912012-11-02 02:16:28 +0200140 * @param string $class_name
Timothy Warren76e04352012-02-14 11:55:17 -0500141 * @return object
142 */
Andrey Andreev9a4f3562012-07-06 11:57:37 +0300143 protected function _fetch_object($class_name = 'stdClass')
Timothy Warren76e04352012-02-14 11:55:17 -0500144 {
Andrey Andreev2bbbd1a2014-05-09 10:24:14 +0300145 $row = ibase_fetch_object($this->result_id, IBASE_FETCH_BLOBS);
Andrey Andreev9a4f3562012-07-06 11:57:37 +0300146
147 if ($class_name === 'stdClass' OR ! $row)
148 {
149 return $row;
150 }
151
152 $class_name = new $class_name();
153 foreach ($row as $key => $value)
154 {
155 $class_name->$key = $value;
156 }
157
158 return $class_name;
Timothy Warren3a4cdc62012-02-17 13:59:44 -0500159 }
Timothy Warren76e04352012-02-14 11:55:17 -0500160
161}