PageRenderTime 16ms CodeModel.GetById 11ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/system/database/drivers/sqlsrv/sqlsrv_result.php

https://bitbucket.org/Naked_Yoshi/sq_kanban
PHP | 193 lines | 61 code | 23 blank | 109 comment | 2 complexity | 49a6bd0e838a9b2efbc296be757a779a MD5 | raw file
  1<?php
  2/**
  3 * CodeIgniter
  4 *
  5 * An open source application development framework for PHP
  6 *
  7 * This content is released under the MIT License (MIT)
  8 *
  9 * Copyright (c) 2014 - 2017, British Columbia Institute of Technology
 10 *
 11 * 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:
 17 *
 18 * 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
 31 * @copyright	Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
 32 * @copyright	Copyright (c) 2014 - 2017, British Columbia Institute of Technology (http://bcit.ca/)
 33 * @license	http://opensource.org/licenses/MIT	MIT License
 34 * @link	https://codeigniter.com
 35 * @since	Version 2.0.3
 36 * @filesource
 37 */
 38defined('BASEPATH') OR exit('No direct script access allowed');
 39
 40/**
 41 * SQLSRV Result Class
 42 *
 43 * This class extends the parent result class: CI_DB_result
 44 *
 45 * @category	Database
 46 * @author		EllisLab Dev Team
 47 * @link		https://codeigniter.com/user_guide/database/
 48 */
 49class CI_DB_sqlsrv_result extends CI_DB_result {
 50
 51	/**
 52	 * Scrollable flag
 53	 *
 54	 * @var	mixed
 55	 */
 56	public $scrollable;
 57
 58	// --------------------------------------------------------------------
 59
 60	/**
 61	 * Constructor
 62	 *
 63	 * @param	object	$driver_object
 64	 * @return	void
 65	 */
 66	public function __construct(&$driver_object)
 67	{
 68		parent::__construct($driver_object);
 69
 70		$this->scrollable = $driver_object->scrollable;
 71	}
 72
 73	// --------------------------------------------------------------------
 74
 75	/**
 76	 * Number of rows in the result set
 77	 *
 78	 * @return	int
 79	 */
 80	public function num_rows()
 81	{
 82		// sqlsrv_num_rows() doesn't work with the FORWARD and DYNAMIC cursors (FALSE is the same as FORWARD)
 83		if ( ! in_array($this->scrollable, array(FALSE, SQLSRV_CURSOR_FORWARD, SQLSRV_CURSOR_DYNAMIC), TRUE))
 84		{
 85			return parent::num_rows();
 86		}
 87
 88		return is_int($this->num_rows)
 89			? $this->num_rows
 90			: $this->num_rows = sqlsrv_num_rows($this->result_id);
 91	}
 92
 93	// --------------------------------------------------------------------
 94
 95	/**
 96	 * Number of fields in the result set
 97	 *
 98	 * @return	int
 99	 */
100	public function num_fields()
101	{
102		return @sqlsrv_num_fields($this->result_id);
103	}
104
105	// --------------------------------------------------------------------
106
107	/**
108	 * Fetch Field Names
109	 *
110	 * Generates an array of column names
111	 *
112	 * @return	array
113	 */
114	public function list_fields()
115	{
116		$field_names = array();
117		foreach (sqlsrv_field_metadata($this->result_id) as $offset => $field)
118		{
119			$field_names[] = $field['Name'];
120		}
121
122		return $field_names;
123	}
124
125	// --------------------------------------------------------------------
126
127	/**
128	 * Field data
129	 *
130	 * Generates an array of objects containing field meta-data
131	 *
132	 * @return	array
133	 */
134	public function field_data()
135	{
136		$retval = array();
137		foreach (sqlsrv_field_metadata($this->result_id) as $i => $field)
138		{
139			$retval[$i]		= new stdClass();
140			$retval[$i]->name	= $field['Name'];
141			$retval[$i]->type	= $field['Type'];
142			$retval[$i]->max_length	= $field['Size'];
143		}
144
145		return $retval;
146	}
147
148	// --------------------------------------------------------------------
149
150	/**
151	 * Free the result
152	 *
153	 * @return	void
154	 */
155	public function free_result()
156	{
157		if (is_resource($this->result_id))
158		{
159			sqlsrv_free_stmt($this->result_id);
160			$this->result_id = FALSE;
161		}
162	}
163
164	// --------------------------------------------------------------------
165
166	/**
167	 * Result - associative array
168	 *
169	 * Returns the result set as an array
170	 *
171	 * @return	array
172	 */
173	protected function _fetch_assoc()
174	{
175		return sqlsrv_fetch_array($this->result_id, SQLSRV_FETCH_ASSOC);
176	}
177
178	// --------------------------------------------------------------------
179
180	/**
181	 * Result - object
182	 *
183	 * Returns the result set as an object
184	 *
185	 * @param	string	$class_name
186	 * @return	object
187	 */
188	protected function _fetch_object($class_name = 'stdClass')
189	{
190		return sqlsrv_fetch_object($this->result_id, $class_name);
191	}
192
193}