summaryrefslogtreecommitdiffstats
path: root/system/database/drivers/pdo/pdo_result.php
diff options
context:
space:
mode:
authorTimothy Warren <tim@timshomepage.net>2011-08-23 00:26:12 +0200
committerTimothy Warren <tim@timshomepage.net>2011-08-23 00:26:12 +0200
commit80ab8160e82c4b87d53916a3920d85a7e689c7e4 (patch)
treeafcee8dd4705b3c68ec88334dcf0b59fec5cdc43 /system/database/drivers/pdo/pdo_result.php
parentff390b9c43f33ee734b5e8abc754539799a19357 (diff)
Started PDO db driver
Diffstat (limited to 'system/database/drivers/pdo/pdo_result.php')
-rw-r--r--system/database/drivers/pdo/pdo_result.php228
1 files changed, 228 insertions, 0 deletions
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 @@
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+/**
+ * CodeIgniter
+ *
+ * An open source application development framework for PHP 5.1.6 or newer
+ *
+ * @package CodeIgniter
+ * @author ExpressionEngine Dev Team
+ * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc.
+ * @license http://codeigniter.com/user_guide/license.html
+ * @link http://codeigniter.com
+ * @since Version 1.0
+ * @filesource
+ */
+
+// ------------------------------------------------------------------------
+
+/**
+ * PDO Result Class
+ *
+ * This class extends the parent result class: CI_DB_result
+ *
+ * @category Database
+ * @author ExpressionEngine Dev Team
+ * @link http://codeigniter.com/user_guide/database/
+ */
+class CI_DB_pdo_result extends CI_DB_result {
+
+ /**
+ * Number of rows in the result set
+ *
+ * @access public
+ * @return integer
+ */
+ function num_rows()
+ {
+ return @pdo_num_rows($this->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