From 80ab8160e82c4b87d53916a3920d85a7e689c7e4 Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Mon, 22 Aug 2011 18:26:12 -0400 Subject: Started PDO db driver --- system/database/drivers/pdo/pdo_result.php | 228 +++++++++++++++++++++++++++++ 1 file changed, 228 insertions(+) create mode 100644 system/database/drivers/pdo/pdo_result.php (limited to 'system/database/drivers/pdo/pdo_result.php') diff --git a/system/database/drivers/pdo/pdo_result.php b/system/database/drivers/pdo/pdo_result.php new file mode 100644 index 000000000..161a77bf8 --- /dev/null +++ b/system/database/drivers/pdo/pdo_result.php @@ -0,0 +1,228 @@ +result_id); + } + + // -------------------------------------------------------------------- + + /** + * Number of fields in the result set + * + * @access public + * @return integer + */ + function num_fields() + { + return @pdo_num_fields($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * Generates an array of column names + * + * @access public + * @return array + */ + function list_fields() + { + $field_names = array(); + for ($i = 0; $i < $this->num_fields(); $i++) + { + $field_names[] = pdo_field_name($this->result_id, $i); + } + + return $field_names; + } + + // -------------------------------------------------------------------- + + /** + * Field data + * + * Generates an array of objects containing field meta-data + * + * @access public + * @return array + */ + function field_data() + { + $retval = array(); + for ($i = 0; $i < $this->num_fields(); $i++) + { + $F = new stdClass(); + $F->name = pdo_field_name($this->result_id, $i); + $F->type = pdo_field_type($this->result_id, $i); + $F->max_length = pdo_field_len($this->result_id, $i); + $F->primary_key = 0; + $F->default = ''; + + $retval[] = $F; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Free the result + * + * @return null + */ + function free_result() + { + if (is_resource($this->result_id)) + { + pdo_free_result($this->result_id); + $this->result_id = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Data Seek + * + * Moves the internal pointer to the desired offset. We call + * this internally before fetching results to make sure the + * result set starts at zero + * + * @access private + * @return array + */ + function _data_seek($n = 0) + { + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Result - associative array + * + * Returns the result set as an array + * + * @access private + * @return array + */ + function _fetch_assoc() + { + if (function_exists('pdo_fetch_object')) + { + return pdo_fetch_array($this->result_id); + } + else + { + return $this->_pdo_fetch_array($this->result_id); + } + } + + // -------------------------------------------------------------------- + + /** + * Result - object + * + * Returns the result set as an object + * + * @access private + * @return object + */ + function _fetch_object() + { + if (function_exists('pdo_fetch_object')) + { + return pdo_fetch_object($this->result_id); + } + else + { + return $this->_pdo_fetch_object($this->result_id); + } + } + + + /** + * Result - object + * + * subsititutes the pdo_fetch_object function when + * not available (pdo_fetch_object requires unixPDO) + * + * @access private + * @return object + */ + function _pdo_fetch_object(& $pdo_result) { + $rs = array(); + $rs_obj = FALSE; + if (pdo_fetch_into($pdo_result, $rs)) { + foreach ($rs as $k=>$v) { + $field_name= pdo_field_name($pdo_result, $k+1); + $rs_obj->$field_name = $v; + } + } + return $rs_obj; + } + + + /** + * Result - array + * + * subsititutes the pdo_fetch_array function when + * not available (pdo_fetch_array requires unixPDO) + * + * @access private + * @return array + */ + function _pdo_fetch_array(& $pdo_result) { + $rs = array(); + $rs_assoc = FALSE; + if (pdo_fetch_into($pdo_result, $rs)) { + $rs_assoc=array(); + foreach ($rs as $k=>$v) { + $field_name= pdo_field_name($pdo_result, $k+1); + $rs_assoc[$field_name] = $v; + } + } + return $rs_assoc; + } + +} + + +/* End of file pdo_result.php */ +/* Location: ./system/database/drivers/pdo/pdo_result.php */ \ No newline at end of file -- cgit v1.2.3-24-g4f1b From ab347586ef289e960ab7cfad32574e526cdcce0b Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Tue, 23 Aug 2011 12:29:29 -0400 Subject: Got PDO working --- system/database/drivers/pdo/pdo_result.php | 106 +++++++---------------------- 1 file changed, 25 insertions(+), 81 deletions(-) (limited to 'system/database/drivers/pdo/pdo_result.php') diff --git a/system/database/drivers/pdo/pdo_result.php b/system/database/drivers/pdo/pdo_result.php index 161a77bf8..c38658626 100644 --- a/system/database/drivers/pdo/pdo_result.php +++ b/system/database/drivers/pdo/pdo_result.php @@ -34,7 +34,7 @@ class CI_DB_pdo_result extends CI_DB_result { */ function num_rows() { - return @pdo_num_rows($this->result_id); + return $this->result_id->rowCount(); } // -------------------------------------------------------------------- @@ -47,7 +47,7 @@ class CI_DB_pdo_result extends CI_DB_result { */ function num_fields() { - return @pdo_num_fields($this->result_id); + return $this->result_id->columnCount(); } // -------------------------------------------------------------------- @@ -62,13 +62,11 @@ class CI_DB_pdo_result extends CI_DB_result { */ function list_fields() { - $field_names = array(); - for ($i = 0; $i < $this->num_fields(); $i++) + if ($this->db->db_debug) { - $field_names[] = pdo_field_name($this->result_id, $i); + return $this->db->display_error('db_unsuported_feature'); } - - return $field_names; + return FALSE; } // -------------------------------------------------------------------- @@ -83,20 +81,25 @@ class CI_DB_pdo_result extends CI_DB_result { */ function field_data() { - $retval = array(); - for ($i = 0; $i < $this->num_fields(); $i++) + $data = array(); + + try { - $F = new stdClass(); - $F->name = pdo_field_name($this->result_id, $i); - $F->type = pdo_field_type($this->result_id, $i); - $F->max_length = pdo_field_len($this->result_id, $i); - $F->primary_key = 0; - $F->default = ''; - - $retval[] = $F; + for($i = 0; $i < $this->num_fields(); $i++) + { + $data[] = $this->result_id->getColumnMeta($i); + } + + return $data; + } + catch (Exception $e) + { + if ($this->db->db_debug) + { + return $this->db->display_error('db_unsuported_feature'); + } + return FALSE; } - - return $retval; } // -------------------------------------------------------------------- @@ -144,14 +147,7 @@ class CI_DB_pdo_result extends CI_DB_result { */ function _fetch_assoc() { - if (function_exists('pdo_fetch_object')) - { - return pdo_fetch_array($this->result_id); - } - else - { - return $this->_pdo_fetch_array($this->result_id); - } + return $this->result_id->fetch(PDO::FETCH_ASSOC); } // -------------------------------------------------------------------- @@ -165,60 +161,8 @@ class CI_DB_pdo_result extends CI_DB_result { * @return object */ function _fetch_object() - { - if (function_exists('pdo_fetch_object')) - { - return pdo_fetch_object($this->result_id); - } - else - { - return $this->_pdo_fetch_object($this->result_id); - } - } - - - /** - * Result - object - * - * subsititutes the pdo_fetch_object function when - * not available (pdo_fetch_object requires unixPDO) - * - * @access private - * @return object - */ - function _pdo_fetch_object(& $pdo_result) { - $rs = array(); - $rs_obj = FALSE; - if (pdo_fetch_into($pdo_result, $rs)) { - foreach ($rs as $k=>$v) { - $field_name= pdo_field_name($pdo_result, $k+1); - $rs_obj->$field_name = $v; - } - } - return $rs_obj; - } - - - /** - * Result - array - * - * subsititutes the pdo_fetch_array function when - * not available (pdo_fetch_array requires unixPDO) - * - * @access private - * @return array - */ - function _pdo_fetch_array(& $pdo_result) { - $rs = array(); - $rs_assoc = FALSE; - if (pdo_fetch_into($pdo_result, $rs)) { - $rs_assoc=array(); - foreach ($rs as $k=>$v) { - $field_name= pdo_field_name($pdo_result, $k+1); - $rs_assoc[$field_name] = $v; - } - } - return $rs_assoc; + { + return $this->result_id->fetchObject(); } } -- cgit v1.2.3-24-g4f1b From 6a450cf1b6440543b14379abacd6308fe51ea4f3 Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Tue, 23 Aug 2011 12:46:11 -0400 Subject: Fixed db->close() and db->free_result() functions --- system/database/drivers/pdo/pdo_result.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'system/database/drivers/pdo/pdo_result.php') diff --git a/system/database/drivers/pdo/pdo_result.php b/system/database/drivers/pdo/pdo_result.php index c38658626..5e136f581 100644 --- a/system/database/drivers/pdo/pdo_result.php +++ b/system/database/drivers/pdo/pdo_result.php @@ -111,9 +111,8 @@ class CI_DB_pdo_result extends CI_DB_result { */ function free_result() { - if (is_resource($this->result_id)) + if (is_object($this->result_id)) { - pdo_free_result($this->result_id); $this->result_id = FALSE; } } -- cgit v1.2.3-24-g4f1b From 018af7a82749cb5c6d224940ab5f08d801f54988 Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Wed, 7 Sep 2011 12:07:35 -0400 Subject: Added changelog item, updated since version file headers --- system/database/drivers/pdo/pdo_result.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'system/database/drivers/pdo/pdo_result.php') diff --git a/system/database/drivers/pdo/pdo_result.php b/system/database/drivers/pdo/pdo_result.php index 5e136f581..e3ae0da4b 100644 --- a/system/database/drivers/pdo/pdo_result.php +++ b/system/database/drivers/pdo/pdo_result.php @@ -9,7 +9,7 @@ * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc. * @license http://codeigniter.com/user_guide/license.html * @link http://codeigniter.com - * @since Version 1.0 + * @since Version 2.1.0 * @filesource */ -- cgit v1.2.3-24-g4f1b From f4a4bd8fac188ebc9cda822ffc811c218fd92b45 Mon Sep 17 00:00:00 2001 From: Derek Jones Date: Thu, 20 Oct 2011 12:18:42 -0500 Subject: adding new license file (OSL 3.0) and updating readme to ReST added notice of license to all source files. OSL to all except the few files we ship inside of the application folder, those are AFL. Updated license in user guide. incrementing next dev version to 3.0 due to licensing change --- system/database/drivers/pdo/pdo_result.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'system/database/drivers/pdo/pdo_result.php') diff --git a/system/database/drivers/pdo/pdo_result.php b/system/database/drivers/pdo/pdo_result.php index e3ae0da4b..559c2edb3 100644 --- a/system/database/drivers/pdo/pdo_result.php +++ b/system/database/drivers/pdo/pdo_result.php @@ -4,10 +4,22 @@ * * An open source application development framework for PHP 5.1.6 or newer * + * NOTICE OF LICENSE + * + * Licensed under the Open Software License version 3.0 + * + * This source file is subject to the Open Software License (OSL 3.0) that is + * bundled with this package in the files license.txt / license.rst. It is + * also available through the world wide web at this URL: + * http://opensource.org/licenses/OSL-3.0 + * If you did not receive a copy of the license and are unable to obtain it + * through the world wide web, please send an email to + * licensing@ellislab.com so we can send you a copy immediately. + * * @package CodeIgniter - * @author ExpressionEngine Dev Team - * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc. - * @license http://codeigniter.com/user_guide/license.html + * @author EllisLab Dev Team + * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc. (http://ellislab.com/) + * @license http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) * @link http://codeigniter.com * @since Version 2.1.0 * @filesource @@ -21,7 +33,7 @@ * This class extends the parent result class: CI_DB_result * * @category Database - * @author ExpressionEngine Dev Team + * @author EllisLab Dev Team * @link http://codeigniter.com/user_guide/database/ */ class CI_DB_pdo_result extends CI_DB_result { -- cgit v1.2.3-24-g4f1b