summaryrefslogtreecommitdiffstats
path: root/system/drivers/DB_driver.php
diff options
context:
space:
mode:
Diffstat (limited to 'system/drivers/DB_driver.php')
-rw-r--r--system/drivers/DB_driver.php107
1 files changed, 47 insertions, 60 deletions
diff --git a/system/drivers/DB_driver.php b/system/drivers/DB_driver.php
index 5fcb04a00..2d1232d7b 100644
--- a/system/drivers/DB_driver.php
+++ b/system/drivers/DB_driver.php
@@ -46,6 +46,12 @@ class CI_DB_driver {
var $bind_marker = '?';
var $queries = array();
+ // These are use with Oracle
+ var $stmt_id;
+ var $curs_id;
+ var $limit_used;
+
+
/**
* Constructor. Accepts one parameter containing the database
* connection settings.
@@ -151,6 +157,11 @@ class CI_DB_driver {
}
return FALSE;
}
+
+ if ($this->dbdriver == 'oci8')
+ {
+ return $sql;
+ }
$query = $this->query($sql);
$row = $query->row();
@@ -173,7 +184,7 @@ class CI_DB_driver {
* @param array An array of binding data
* @return mixed
*/
- function query($sql, $binds = FALSE)
+ function query($sql, $binds = FALSE, $return_object = TRUE)
{
if ( ! $this->conn_id)
{
@@ -228,11 +239,19 @@ class CI_DB_driver {
$this->query_count++;
// Was the query a "write" type?
- // If so we'll return simply return true
+ // If so we'll simply return true
if ($this->is_write_type($sql) === TRUE)
{
return TRUE;
}
+
+ // Return TRUE if we don't need to create a result object
+ // Currently only the Oracle driver uses this when stored
+ // procedures are used
+ if ($return_object !== TRUE)
+ {
+ return TRUE;
+ }
// Instantiate and return the DB result object
$result = 'CI_DB_'.$this->dbdriver.'_result';
@@ -241,6 +260,13 @@ class CI_DB_driver {
$RES->conn_id = $this->conn_id;
$RES->db_debug = $this->db_debug;
$RES->result_id = $this->result_id;
+
+ if ($this->dbdriver == 'oci8')
+ {
+ $RES->stmt_id = $this->stmt_id;
+ $RES->curs_id = NULL;
+ $RES->limit_used = $this->limit_used;
+ }
return $RES;
}
@@ -352,19 +378,16 @@ class CI_DB_driver {
*/
function escape($str)
{
- if ( ! is_numeric($str)) // bug fix to ensure that numbers are not treated as strings.
- {
- switch (gettype($str))
- {
- case 'string' : $str = "'".$this->escape_str($str)."'";
- break;
- case 'boolean' : $str = ($str === FALSE) ? 0 : 1;
- break;
- default : $str = ($str === NULL) ? 'NULL' : $str;
- break;
- }
- }
-
+ switch (gettype($str))
+ {
+ case 'string' : $str = "'".$this->escape_str($str)."'";
+ break;
+ case 'boolean' : $str = ($str === FALSE) ? 0 : 1;
+ break;
+ default : $str = ($str === NULL) ? 'NULL' : $str;
+ break;
+ }
+
return $str;
}
@@ -394,7 +417,14 @@ class CI_DB_driver {
{
foreach($query->result_array() as $row)
{
- $retval[] = array_shift($row);
+ if (isset($row['TABLE_NAME']))
+ {
+ $retval[] = $row['TABLE_NAME'];
+ }
+ else
+ {
+ $retval[] = array_shift($row);
+ }
}
}
@@ -447,7 +477,7 @@ class CI_DB_driver {
$retval = array();
foreach($query->result_array() as $row)
{
- if ($this->dbdriver == 'mssql' AND isset($row['COLUMN_NAME']))
+ if (isset($row['COLUMN_NAME']))
{
$retval[] = $row['COLUMN_NAME'];
}
@@ -671,29 +701,6 @@ class CI_DB_driver {
}
- // --------------------------------------------------------------------
-
- /**
- * Field Data - old version - DEPRECATED
- *
- * @deprecated use $this->db->field_data() instead
- */
- function fields($table = '')
- {
- return $this->field_data($table);
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Smart Escape String - old version - DEPRECATED
- *
- * @deprecated use $this->db->escape() instead
- */
- function smart_escape_str($str)
- {
- return $this->escape($str);
- }
}
@@ -926,24 +933,4 @@ class CI_DB_result {
}
-
-
-/**
- * Database Field Class
- *
- * This class will contain the field meta-data. It
- * is called by one of the field result functions
- *
- * @category Database
- * @author Rick Ellis
- * @link http://www.codeigniter.com/user_guide/libraries/database/
- */
-class CI_DB_field {
- var $name;
- var $type;
- var $default;
- var $max_length;
- var $primary_key;
-}
-
?> \ No newline at end of file