summaryrefslogtreecommitdiffstats
path: root/system/database
diff options
context:
space:
mode:
Diffstat (limited to 'system/database')
-rw-r--r--system/database/DB_driver.php82
-rw-r--r--system/database/DB_utility.php95
-rw-r--r--system/database/drivers/mssql/mssql_driver.php109
-rw-r--r--system/database/drivers/mysql/mysql_driver.php124
-rw-r--r--system/database/drivers/mysqli/mysqli_driver.php119
-rw-r--r--system/database/drivers/oci8/oci8_driver.php121
-rw-r--r--system/database/drivers/odbc/odbc_driver.php107
-rw-r--r--system/database/drivers/postgre/postgre_driver.php117
-rw-r--r--system/database/drivers/sqlite/sqlite_driver.php149
9 files changed, 533 insertions, 490 deletions
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index ef37967dc..3f7c82627 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -190,11 +190,11 @@ class CI_DB_driver {
if ($this->db_debug)
{
- log_message('error', 'Query error: '.$this->error_message());
+ log_message('error', 'Query error: '.$this->_error_message());
return $this->display_error(
array(
- 'Error Number: '.$this->error_number(),
- $this->error_message(),
+ 'Error Number: '.$this->_error_number(),
+ $this->_error_message(),
$sql
)
);
@@ -481,7 +481,81 @@ class CI_DB_driver {
}
return $str;
- }
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Generate an insert string
+ *
+ * @access public
+ * @param string the table upon which the query will be performed
+ * @param array an associative array data of key/values
+ * @return string
+ */
+ function insert_string($table, $data)
+ {
+ $fields = array();
+ $values = array();
+
+ foreach($data as $key => $val)
+ {
+ $fields[] = $key;
+ $values[] = $this->escape($val);
+ }
+
+ return $this->_insert($this->dbprefix.$table, $fields, $values);
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Generate an update string
+ *
+ * @access public
+ * @param string the table upon which the query will be performed
+ * @param array an associative array data of key/values
+ * @param mixed the "where" statement
+ * @return string
+ */
+ function update_string($table, $data, $where)
+ {
+ if ($where == '')
+ return false;
+
+ $fields = array();
+ foreach($data as $key => $val)
+ {
+ $fields[$key] = $this->escape($val);
+ }
+
+ if ( ! is_array($where))
+ {
+ $dest = array($where);
+ }
+ else
+ {
+ $dest = array();
+ foreach ($where as $key => $val)
+ {
+ $prefix = (count($dest) == 0) ? '' : ' AND ';
+
+ if ($val != '')
+ {
+ if ( ! $this->_has_operator($key))
+ {
+ $key .= ' =';
+ }
+
+ $val = ' '.$this->escape($val);
+ }
+
+ $dest[] = $prefix.$key.$val;
+ }
+ }
+
+ return $this->_update($this->dbprefix.$table, $fields, $dest);
+ }
// --------------------------------------------------------------------
diff --git a/system/database/DB_utility.php b/system/database/DB_utility.php
index a4d4eb0d1..39dc2cca2 100644
--- a/system/database/DB_utility.php
+++ b/system/database/DB_utility.php
@@ -202,79 +202,42 @@ class CI_DB_utility {
return current($fields);
}
- // --------------------------------------------------------------------
- /**
- * Generate an insert string
- *
- * @access public
- * @param string the table upon which the query will be performed
- * @param array an associative array data of key/values
- * @return string
- */
- function insert_string($table, $data)
- {
- $fields = array();
- $values = array();
-
- foreach($data as $key => $val)
- {
- $fields[] = $key;
- $values[] = $this->escape($val);
- }
- return $this->_insert($this->dbprefix.$table, $fields, $values);
+
+
+ function create_database()
+ {
}
- // --------------------------------------------------------------------
-
- /**
- * Generate an update string
- *
- * @access public
- * @param string the table upon which the query will be performed
- * @param array an associative array data of key/values
- * @param mixed the "where" statement
- * @return string
- */
- function update_string($table, $data, $where)
+ function drop_database()
{
- if ($where == '')
- return false;
-
- $fields = array();
- foreach($data as $key => $val)
- {
- $fields[$key] = $this->escape($val);
- }
-
- if ( ! is_array($where))
- {
- $dest = array($where);
- }
- else
- {
- $dest = array();
- foreach ($where as $key => $val)
- {
- $prefix = (count($dest) == 0) ? '' : ' AND ';
+ }
- if ($val != '')
- {
- if ( ! $this->_has_operator($key))
- {
- $key .= ' =';
- }
-
- $val = ' '.$this->escape($val);
- }
-
- $dest[] = $prefix.$key.$val;
- }
- }
+ function show_databases()
+ {
+ }
+
+ function create_table()
+ {
+ }
+
+ function alter_table()
+ {
+ }
+
+ function create_index()
+ {
+ }
+
+ function drop_index()
+ {
+ }
+
+ function optimize()
+ {
+ }
- return $this->_update($this->dbprefix.$table, $fields, $dest);
- }
}
diff --git a/system/database/drivers/mssql/mssql_driver.php b/system/database/drivers/mssql/mssql_driver.php
index 4f668f282..cd808da46 100644
--- a/system/database/drivers/mssql/mssql_driver.php
+++ b/system/database/drivers/mssql/mssql_driver.php
@@ -251,10 +251,10 @@ class CI_DB_mssql_driver extends CI_DB {
/**
* The error message string
*
- * @access public
+ * @access private
* @return string
*/
- function error_message()
+ function _error_message()
{
// Are errros even supported in MS SQL?
return '';
@@ -265,10 +265,10 @@ class CI_DB_mssql_driver extends CI_DB {
/**
* The error message number
*
- * @access public
+ * @access private
* @return integer
*/
- function error_number()
+ function _error_number()
{
// Are error numbers supported?
return '';
@@ -282,11 +282,11 @@ class CI_DB_mssql_driver extends CI_DB {
* This function adds backticks if the table name has a period
* in it. Some DBs will get cranky unless periods are escaped
*
- * @access public
+ * @access private
* @param string the table name
* @return string
*/
- function escape_table($table)
+ function _escape_table($table)
{
if (stristr($table, '.'))
{
@@ -294,25 +294,7 @@ class CI_DB_mssql_driver extends CI_DB {
}
return $table;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Field data query
- *
- * Generates a platform-specific query so that the column data can be retrieved
- *
- * @access public
- * @param string the table name
- * @return object
- */
- function _field_data($table)
- {
- $sql = "SELECT TOP 1 FROM ".$this->escape_table($table);
- $query = $this->query($sql);
- return $query->field_data();
- }
+ }
// --------------------------------------------------------------------
@@ -329,7 +311,7 @@ class CI_DB_mssql_driver extends CI_DB {
*/
function _insert($table, $keys, $values)
{
- return "INSERT INTO ".$this->escape_table($table)." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
+ return "INSERT INTO ".$this->_escape_table($table)." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
}
// --------------------------------------------------------------------
@@ -352,7 +334,7 @@ class CI_DB_mssql_driver extends CI_DB {
$valstr[] = $key." = ".$val;
}
- return "UPDATE ".$this->escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);
+ return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);
}
// --------------------------------------------------------------------
@@ -369,9 +351,43 @@ class CI_DB_mssql_driver extends CI_DB {
*/
function _delete($table, $where)
{
- return "DELETE FROM ".$this->escape_table($table)." WHERE ".implode(" ", $where);
+ return "DELETE FROM ".$this->_escape_table($table)." WHERE ".implode(" ", $where);
}
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Limit string
+ *
+ * Generates a platform-specific LIMIT clause
+ *
+ * @access public
+ * @param string the sql query string
+ * @param integer the number of rows to limit the query to
+ * @param integer the offset value
+ * @return string
+ */
+ function _limit($sql, $limit, $offset)
+ {
+ $i = $limit + $offset;
+ return preg_replace('/(^\SELECT (DISTINCT)?)/i','\\1 TOP '.$i.' ', $sql);
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Close DB Connection
+ *
+ * @access public
+ * @param resource
+ * @return void
+ */
+ function _close($conn_id)
+ {
+ mssql_close($conn_id);
+ }
+
// --------------------------------------------------------------------
/**
@@ -413,43 +429,28 @@ class CI_DB_mssql_driver extends CI_DB {
*/
function _show_columns($table = '')
{
- return "SELECT * FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = '".$this->escape_table($table)."'";
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Limit string
- *
- * Generates a platform-specific LIMIT clause
- *
- * @access public
- * @param string the sql query string
- * @param integer the number of rows to limit the query to
- * @param integer the offset value
- * @return string
- */
- function _limit($sql, $limit, $offset)
- {
- $i = $limit + $offset;
-
- return preg_replace('/(^\SELECT (DISTINCT)?)/i','\\1 TOP '.$i.' ', $sql);
+ return "SELECT * FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = '".$this->_escape_table($table)."'";
}
// --------------------------------------------------------------------
/**
- * Close DB Connection
+ * Field data query
+ *
+ * Generates a platform-specific query so that the column data can be retrieved
*
* @access public
- * @param resource
- * @return void
+ * @param string the table name
+ * @return object
*/
- function _close($conn_id)
+ function _field_data($table)
{
- mssql_close($conn_id);
+ $sql = "SELECT TOP 1 FROM ".$this->_escape_table($table);
+ $query = $this->query($sql);
+ return $query->field_data();
}
+
}
diff --git a/system/database/drivers/mysql/mysql_driver.php b/system/database/drivers/mysql/mysql_driver.php
index 8aa82da72..fc7f6780b 100644
--- a/system/database/drivers/mysql/mysql_driver.php
+++ b/system/database/drivers/mysql/mysql_driver.php
@@ -269,10 +269,10 @@ class CI_DB_mysql_driver extends CI_DB {
/**
* The error message string
*
- * @access public
+ * @access private
* @return string
*/
- function error_message()
+ function _error_message()
{
return mysql_error($this->conn_id);
}
@@ -282,10 +282,10 @@ class CI_DB_mysql_driver extends CI_DB {
/**
* The error message number
*
- * @access public
+ * @access private
* @return integer
*/
- function error_number()
+ function _error_number()
{
return mysql_errno($this->conn_id);
}
@@ -298,11 +298,11 @@ class CI_DB_mysql_driver extends CI_DB {
* This function adds backticks if the table name has a period
* in it. Some DBs will get cranky unless periods are escaped
*
- * @access public
+ * @access private
* @param string the table name
* @return string
*/
- function escape_table($table)
+ function _escape_table($table)
{
if (stristr($table, '.'))
{
@@ -311,25 +311,7 @@ class CI_DB_mysql_driver extends CI_DB {
return $table;
}
-
- // --------------------------------------------------------------------
-
- /**
- * Field data query
- *
- * Generates a platform-specific query so that the column data can be retrieved
- *
- * @access public
- * @param string the table name
- * @return object
- */
- function _field_data($table)
- {
- $sql = "SELECT * FROM ".$this->escape_table($table)." LIMIT 1";
- $query = $this->query($sql);
- return $query->field_data();
- }
-
+
// --------------------------------------------------------------------
/**
@@ -345,7 +327,7 @@ class CI_DB_mysql_driver extends CI_DB {
*/
function _insert($table, $keys, $values)
{
- return "INSERT INTO ".$this->escape_table($table)." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
+ return "INSERT INTO ".$this->_escape_table($table)." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
}
// --------------------------------------------------------------------
@@ -368,7 +350,7 @@ class CI_DB_mysql_driver extends CI_DB {
$valstr[] = $key." = ".$val;
}
- return "UPDATE ".$this->escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);
+ return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);
}
// --------------------------------------------------------------------
@@ -385,9 +367,50 @@ class CI_DB_mysql_driver extends CI_DB {
*/
function _delete($table, $where)
{
- return "DELETE FROM ".$this->escape_table($table)." WHERE ".implode(" ", $where);
+ return "DELETE FROM ".$this->_escape_table($table)." WHERE ".implode(" ", $where);
}
-
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Limit string
+ *
+ * Generates a platform-specific LIMIT clause
+ *
+ * @access public
+ * @param string the sql query string
+ * @param integer the number of rows to limit the query to
+ * @param integer the offset value
+ * @return string
+ */
+ function _limit($sql, $limit, $offset)
+ {
+ if ($offset == 0)
+ {
+ $offset = '';
+ }
+ else
+ {
+ $offset .= ", ";
+ }
+
+ return $sql."LIMIT ".$offset.$limit;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Close DB Connection
+ *
+ * @access public
+ * @param resource
+ * @return void
+ */
+ function _close($conn_id)
+ {
+ mysql_close($conn_id);
+ }
+
// --------------------------------------------------------------------
/**
@@ -429,48 +452,25 @@ class CI_DB_mysql_driver extends CI_DB {
*/
function _show_columns($table = '')
{
- return "SHOW COLUMNS FROM ".$this->escape_table($table);
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Limit string
- *
- * Generates a platform-specific LIMIT clause
- *
- * @access public
- * @param string the sql query string
- * @param integer the number of rows to limit the query to
- * @param integer the offset value
- * @return string
- */
- function _limit($sql, $limit, $offset)
- {
- if ($offset == 0)
- {
- $offset = '';
- }
- else
- {
- $offset .= ", ";
- }
-
- return $sql."LIMIT ".$offset.$limit;
+ return "SHOW COLUMNS FROM ".$this->_escape_table($table);
}
// --------------------------------------------------------------------
/**
- * Close DB Connection
+ * Field data query
+ *
+ * Generates a platform-specific query so that the column data can be retrieved
*
* @access public
- * @param resource
- * @return void
+ * @param string the table name
+ * @return object
*/
- function _close($conn_id)
+ function _field_data($table)
{
- mysql_close($conn_id);
+ $sql = "SELECT * FROM ".$this->_escape_table($table)." LIMIT 1";
+ $query = $this->query($sql);
+ return $query->field_data();
}
}
diff --git a/system/database/drivers/mysqli/mysqli_driver.php b/system/database/drivers/mysqli/mysqli_driver.php
index 8d28c2c5f..959384164 100644
--- a/system/database/drivers/mysqli/mysqli_driver.php
+++ b/system/database/drivers/mysqli/mysqli_driver.php
@@ -272,10 +272,10 @@ class CI_DB_mysqli_driver extends CI_DB {
/**
* The error message string
*
- * @access public
+ * @access private
* @return string
*/
- function error_message()
+ function _error_message()
{
return mysqli_error($this->conn_id);
}
@@ -285,10 +285,10 @@ class CI_DB_mysqli_driver extends CI_DB {
/**
* The error message number
*
- * @access public
+ * @access private
* @return integer
*/
- function error_number()
+ function _error_number()
{
return mysqli_errno($this->conn_id);
}
@@ -301,11 +301,11 @@ class CI_DB_mysqli_driver extends CI_DB {
* This function adds backticks if the table name has a period
* in it. Some DBs will get cranky unless periods are escaped
*
- * @access public
+ * @access private
* @param string the table name
* @return string
*/
- function escape_table($table)
+ function _escape_table($table)
{
if (stristr($table, '.'))
{
@@ -314,25 +314,7 @@ class CI_DB_mysqli_driver extends CI_DB {
return $table;
}
-
- // --------------------------------------------------------------------
-
- /**
- * Field data query
- *
- * Generates a platform-specific query so that the column data can be retrieved
- *
- * @access public
- * @param string the table name
- * @return object
- */
- function _field_data($table)
- {
- $sql = "SELECT * FROM ".$this->escape_table($table)." LIMIT 1";
- $query = $this->query($sql);
- return $query->field_data();
- }
-
+
// --------------------------------------------------------------------
/**
@@ -348,7 +330,7 @@ class CI_DB_mysqli_driver extends CI_DB {
*/
function _insert($table, $keys, $values)
{
- return "INSERT INTO ".$this->escape_table($table)." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
+ return "INSERT INTO ".$this->_escape_table($table)." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
}
// --------------------------------------------------------------------
@@ -371,7 +353,7 @@ class CI_DB_mysqli_driver extends CI_DB {
$valstr[] = $key." = ".$val;
}
- return "UPDATE ".$this->escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);
+ return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);
}
// --------------------------------------------------------------------
@@ -388,9 +370,48 @@ class CI_DB_mysqli_driver extends CI_DB {
*/
function _delete($table, $where)
{
- return "DELETE FROM ".$this->escape_table($table)." WHERE ".implode(" ", $where);
+ return "DELETE FROM ".$this->_escape_table($table)." WHERE ".implode(" ", $where);
}
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Limit string
+ *
+ * Generates a platform-specific LIMIT clause
+ *
+ * @access public
+ * @param string the sql query string
+ * @param integer the number of rows to limit the query to
+ * @param integer the offset value
+ * @return string
+ */
+ function _limit($sql, $limit, $offset)
+ {
+ $sql .= "LIMIT ".$limit;
+ if ($offset > 0)
+ {
+ $sql .= " OFFSET ".$offset;
+ }
+
+ return $sql;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Close DB Connection
+ *
+ * @access public
+ * @param resource
+ * @return void
+ */
+ function _close($conn_id)
+ {
+ mysqli_close($conn_id);
+ }
+
// --------------------------------------------------------------------
/**
@@ -432,47 +453,27 @@ class CI_DB_mysqli_driver extends CI_DB {
*/
function _show_columns($table = '')
{
- return "SHOW COLUMNS FROM ".$this->escape_table($table);
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Limit string
- *
- * Generates a platform-specific LIMIT clause
- *
- * @access public
- * @param string the sql query string
- * @param integer the number of rows to limit the query to
- * @param integer the offset value
- * @return string
- */
- function _limit($sql, $limit, $offset)
- {
- $sql .= "LIMIT ".$limit;
-
- if ($offset > 0)
- {
- $sql .= " OFFSET ".$offset;
- }
-
- return $sql;
+ return "SHOW COLUMNS FROM ".$this->_escape_table($table);
}
// --------------------------------------------------------------------
/**
- * Close DB Connection
+ * Field data query
+ *
+ * Generates a platform-specific query so that the column data can be retrieved
*
* @access public
- * @param resource
- * @return void
+ * @param string the table name
+ * @return object
*/
- function _close($conn_id)
+ function _field_data($table)
{
- mysqli_close($conn_id);
+ $sql = "SELECT * FROM ".$this->_escape_table($table)." LIMIT 1";
+ $query = $this->query($sql);
+ return $query->field_data();
}
+
}
diff --git a/system/database/drivers/oci8/oci8_driver.php b/system/database/drivers/oci8/oci8_driver.php
index 707394d53..bfc38a435 100644
--- a/system/database/drivers/oci8/oci8_driver.php
+++ b/system/database/drivers/oci8/oci8_driver.php
@@ -393,10 +393,10 @@ class CI_DB_oci8_driver extends CI_DB {
/**
* The error message string
*
- * @access public
+ * @access private
* @return string
*/
- function error_message()
+ function _error_message()
{
$error = ocierror($this->conn_id);
return $error['message'];
@@ -407,10 +407,10 @@ class CI_DB_oci8_driver extends CI_DB {
/**
* The error message number
*
- * @access public
+ * @access private
* @return integer
*/
- function error_number()
+ function _error_number()
{
$error = ocierror($this->conn_id);
return $error['code'];
@@ -424,11 +424,11 @@ class CI_DB_oci8_driver extends CI_DB {
* This function adds backticks if the table name has a period
* in it. Some DBs will get cranky unless periods are escaped
*
- * @access public
+ * @access private
* @param string the table name
* @return string
*/
- function escape_table($table)
+ function _escape_table($table)
{
if (stristr($table, '.'))
{
@@ -441,24 +441,6 @@ class CI_DB_oci8_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * Field data query
- *
- * Generates a platform-specific query so that the column data can be retrieved
- *
- * @access public
- * @param string the table name
- * @return object
- */
- function _field_data($table)
- {
- $sql = "SELECT * FROM ".$this->escape_table($table)." where rownum = 1";
- $query = $this->query($sql);
- return $query->field_data();
- }
-
- // --------------------------------------------------------------------
-
- /**
* Insert statement
*
* Generates a platform-specific insert string from the supplied data
@@ -471,7 +453,7 @@ class CI_DB_oci8_driver extends CI_DB {
*/
function _insert($table, $keys, $values)
{
- return "INSERT INTO ".$this->escape_table($table)." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
+ return "INSERT INTO ".$this->_escape_table($table)." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
}
// --------------------------------------------------------------------
@@ -494,7 +476,7 @@ class CI_DB_oci8_driver extends CI_DB {
$valstr[] = $key." = ".$val;
}
- return "UPDATE ".$this->escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);
+ return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);
}
// --------------------------------------------------------------------
@@ -511,7 +493,50 @@ class CI_DB_oci8_driver extends CI_DB {
*/
function _delete($table, $where)
{
- return "DELETE FROM ".$this->escape_table($table)." WHERE ".implode(" ", $where);
+ return "DELETE FROM ".$this->_escape_table($table)." WHERE ".implode(" ", $where);
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Limit string
+ *
+ * Generates a platform-specific LIMIT clause
+ *
+ * @access public
+ * @param string the sql query string
+ * @param integer the number of rows to limit the query to
+ * @param integer the offset value
+ * @return string
+ */
+ function _limit($sql, $limit, $offset)
+ {
+ $limit = $offset + $limit;
+ $newsql = "SELECT * FROM (select inner_query.*, rownum rnum FROM ($sql) inner_query WHERE rownum < $limit)";
+
+ if ($offset != 0)
+ {
+ $newsql .= " WHERE rnum >= $offset";
+ }
+
+ // remember that we used limits
+ $this->limit_used = TRUE;
+
+ return $newsql;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Close DB Connection
+ *
+ * @access public
+ * @param resource
+ * @return void
+ */
+ function _close($conn_id)
+ {
+ ocilogoff($conn_id);
}
// --------------------------------------------------------------------
@@ -562,46 +587,22 @@ class CI_DB_oci8_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * Limit string
- *
- * Generates a platform-specific LIMIT clause
+ * Field data query
*
- * @access public
- * @param string the sql query string
- * @param integer the number of rows to limit the query to
- * @param integer the offset value
- * @return string
- */
- function _limit($sql, $limit, $offset)
- {
- $limit = $offset + $limit;
- $newsql = "SELECT * FROM (select inner_query.*, rownum rnum FROM ($sql) inner_query WHERE rownum < $limit)";
-
- if ($offset != 0)
- {
- $newsql .= " WHERE rnum >= $offset";
- }
-
- // remember that we used limits
- $this->limit_used = TRUE;
-
- return $newsql;
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Close DB Connection
+ * Generates a platform-specific query so that the column data can be retrieved
*
* @access public
- * @param resource
- * @return void
+ * @param string the table name
+ * @return object
*/
- function _close($conn_id)
+ function _field_data($table)
{
- ocilogoff($conn_id);
+ $sql = "SELECT * FROM ".$this->_escape_table($table)." where rownum = 1";
+ $query = $this->query($sql);
+ return $query->field_data();
}
+
}
diff --git a/system/database/drivers/odbc/odbc_driver.php b/system/database/drivers/odbc/odbc_driver.php
index 1725ed743..c05abd082 100644
--- a/system/database/drivers/odbc/odbc_driver.php
+++ b/system/database/drivers/odbc/odbc_driver.php
@@ -252,10 +252,10 @@ class CI_DB_odbc_driver extends CI_DB {
/**
* The error message string
*
- * @access public
+ * @access private
* @return string
*/
- function error_message()
+ function _error_message()
{
return odbc_errormsg($this->conn_id);
}
@@ -265,10 +265,10 @@ class CI_DB_odbc_driver extends CI_DB {
/**
* The error message number
*
- * @access public
+ * @access private
* @return integer
*/
- function error_number()
+ function _error_number()
{
return odbc_error($this->conn_id);
}
@@ -281,11 +281,11 @@ class CI_DB_odbc_driver extends CI_DB {
* This function adds backticks if the table name has a period
* in it. Some DBs will get cranky unless periods are escaped
*
- * @access public
+ * @access private
* @param string the table name
* @return string
*/
- function escape_table($table)
+ function _escape_table($table)
{
if (stristr($table, '.'))
{
@@ -294,25 +294,7 @@ class CI_DB_odbc_driver extends CI_DB {
return $table;
}
-
- // --------------------------------------------------------------------
-
- /**
- * Field data query
- *
- * Generates a platform-specific query so that the column data can be retrieved
- *
- * @access public
- * @param string the table name
- * @return object
- */
- function _field_data($table)
- {
- $sql = "SELECT TOP 1 FROM ".$this->escape_table($table);
- $query = $this->query($sql);
- return $query->field_data();
- }
-
+
// --------------------------------------------------------------------
/**
@@ -328,7 +310,7 @@ class CI_DB_odbc_driver extends CI_DB {
*/
function _insert($table, $keys, $values)
{
- return "INSERT INTO ".$this->escape_table($table)." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
+ return "INSERT INTO ".$this->_escape_table($table)." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
}
// --------------------------------------------------------------------
@@ -351,7 +333,7 @@ class CI_DB_odbc_driver extends CI_DB {
$valstr[] = $key." = ".$val;
}
- return "UPDATE ".$this->escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);
+ return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);
}
// --------------------------------------------------------------------
@@ -368,9 +350,42 @@ class CI_DB_odbc_driver extends CI_DB {
*/
function _delete($table, $where)
{
- return "DELETE FROM ".$this->escape_table($table)." WHERE ".implode(" ", $where);
+ return "DELETE FROM ".$this->_escape_table($table)." WHERE ".implode(" ", $where);
}
-
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Limit string
+ *
+ * Generates a platform-specific LIMIT clause
+ *
+ * @access public
+ * @param string the sql query string
+ * @param integer the number of rows to limit the query to
+ * @param integer the offset value
+ * @return string
+ */
+ function _limit($sql, $limit, $offset)
+ {
+ // Does ODBC doesn't use the LIMIT clause?
+ return $sql;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Close DB Connection
+ *
+ * @access public
+ * @param resource
+ * @return void
+ */
+ function _close($conn_id)
+ {
+ odbc_close($conn_id);
+ }
+
// --------------------------------------------------------------------
/**
@@ -412,41 +427,27 @@ class CI_DB_odbc_driver extends CI_DB {
*/
function _show_columns($table = '')
{
- return "SHOW COLUMNS FROM ".$this->escape_table($table);
+ return "SHOW COLUMNS FROM ".$this->_escape_table($table);
}
-
+
// --------------------------------------------------------------------
/**
- * Limit string
+ * Field data query
*
- * Generates a platform-specific LIMIT clause
+ * Generates a platform-specific query so that the column data can be retrieved
*
* @access public
- * @param string the sql query string
- * @param integer the number of rows to limit the query to
- * @param integer the offset value
- * @return string
+ * @param string the table name
+ * @return object
*/
- function _limit($sql, $limit, $offset)
+ function _field_data($table)
{
- // Does ODBC doesn't use the LIMIT clause?
- return $sql;
+ $sql = "SELECT TOP 1 FROM ".$this->_escape_table($table);
+ $query = $this->query($sql);
+ return $query->field_data();
}
- // --------------------------------------------------------------------
-
- /**
- * Close DB Connection
- *
- * @access public
- * @param resource
- * @return void
- */
- function _close($conn_id)
- {
- odbc_close($conn_id);
- }
}
diff --git a/system/database/drivers/postgre/postgre_driver.php b/system/database/drivers/postgre/postgre_driver.php
index 92767c42b..03817188f 100644
--- a/system/database/drivers/postgre/postgre_driver.php
+++ b/system/database/drivers/postgre/postgre_driver.php
@@ -279,10 +279,10 @@ class CI_DB_postgre_driver extends CI_DB {
/**
* The error message string
*
- * @access public
+ * @access private
* @return string
*/
- function error_message()
+ function _error_message()
{
return pg_last_error($this->conn_id);
}
@@ -292,10 +292,10 @@ class CI_DB_postgre_driver extends CI_DB {
/**
* The error message number
*
- * @access public
+ * @access private
* @return integer
*/
- function error_number()
+ function _error_number()
{
return '';
}
@@ -308,11 +308,11 @@ class CI_DB_postgre_driver extends CI_DB {
* This function adds backticks if the table name has a period
* in it. Some DBs will get cranky unless periods are escaped.
*
- * @access public
+ * @access private
* @param string the table name
* @return string
*/
- function escape_table($table)
+ function _escape_table($table)
{
if (stristr($table, '.'))
{
@@ -325,24 +325,6 @@ class CI_DB_postgre_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * Field data query
- *
- * Generates a platform-specific query so that the column data can be retrieved
- *
- * @access public
- * @param string the table name
- * @return object
- */
- function _field_data($table)
- {
- $sql = "SELECT * FROM ".$this->escape_table($table)." LIMIT 1";
- $query = $this->query($sql);
- return $query->field_data();
- }
-
- // --------------------------------------------------------------------
-
- /**
* Insert statement
*
* Generates a platform-specific insert string from the supplied data
@@ -355,7 +337,7 @@ class CI_DB_postgre_driver extends CI_DB {
*/
function _insert($table, $keys, $values)
{
- return "INSERT INTO ".$this->escape_table($table)." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
+ return "INSERT INTO ".$this->_escape_table($table)." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
}
// --------------------------------------------------------------------
@@ -378,7 +360,7 @@ class CI_DB_postgre_driver extends CI_DB {
$valstr[] = $key." = ".$val;
}
- return "UPDATE ".$this->escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);
+ return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);
}
// --------------------------------------------------------------------
@@ -395,9 +377,48 @@ class CI_DB_postgre_driver extends CI_DB {
*/
function _delete($table, $where)
{
- return "DELETE FROM ".$this->escape_table($table)." WHERE ".implode(" ", $where);
+ return "DELETE FROM ".$this->_escape_table($table)." WHERE ".implode(" ", $where);
}
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Limit string
+ *
+ * Generates a platform-specific LIMIT clause
+ *
+ * @access public
+ * @param string the sql query string
+ * @param integer the number of rows to limit the query to
+ * @param integer the offset value
+ * @return string
+ */
+ function _limit($sql, $limit, $offset)
+ {
+ $sql .= "LIMIT ".$limit;
+ if ($offset > 0)
+ {
+ $sql .= " OFFSET ".$offset;
+ }
+
+ return $sql;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Close DB Connection
+ *
+ * @access public
+ * @param resource
+ * @return void
+ */
+ function _close($conn_id)
+ {
+ pg_close($conn_id);
+ }
+
// --------------------------------------------------------------------
/**
@@ -437,48 +458,28 @@ class CI_DB_postgre_driver extends CI_DB {
*/
function _show_columns($table = '')
{
- return "SELECT column_name FROM information_schema.columns WHERE table_name ='".$this->escape_table($table)."'";
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Limit string
- *
- * Generates a platform-specific LIMIT clause
- *
- * @access public
- * @param string the sql query string
- * @param integer the number of rows to limit the query to
- * @param integer the offset value
- * @return string
- */
- function _limit($sql, $limit, $offset)
- {
- $sql .= "LIMIT ".$limit;
-
- if ($offset > 0)
- {
- $sql .= " OFFSET ".$offset;
- }
-
- return $sql;
+ return "SELECT column_name FROM information_schema.columns WHERE table_name ='".$this->_escape_table($table)."'";
}
// --------------------------------------------------------------------
/**
- * Close DB Connection
+ * Field data query
+ *
+ * Generates a platform-specific query so that the column data can be retrieved
*
* @access public
- * @param resource
- * @return void
+ * @param string the table name
+ * @return object
*/
- function _close($conn_id)
+ function _field_data($table)
{
- pg_close($conn_id);
+ $sql = "SELECT * FROM ".$this->_escape_table($table)." LIMIT 1";
+ $query = $this->query($sql);
+ return $query->field_data();
}
+
}
?> \ No newline at end of file
diff --git a/system/database/drivers/sqlite/sqlite_driver.php b/system/database/drivers/sqlite/sqlite_driver.php
index 634b72ed4..f8318b814 100644
--- a/system/database/drivers/sqlite/sqlite_driver.php
+++ b/system/database/drivers/sqlite/sqlite_driver.php
@@ -271,10 +271,10 @@ class CI_DB_sqlite_driver extends CI_DB {
/**
* The error message string
*
- * @access public
+ * @access private
* @return string
*/
- function error_message()
+ function _error_message()
{
return sqlite_error_string(sqlite_last_error($this->conn_id));
}
@@ -284,27 +284,14 @@ class CI_DB_sqlite_driver extends CI_DB {
/**
* The error message number
*
- * @access public
+ * @access private
* @return integer
*/
- function error_number()
+ function _error_number()
{
return sqlite_last_error($this->conn_id);
}
-
- // --------------------------------------------------------------------
-
- /**
- * Version number query string
- *
- * @access public
- * @return string
- */
- function version()
- {
- return sqlite_libversion();
- }
-
+
// --------------------------------------------------------------------
/**
@@ -313,11 +300,11 @@ class CI_DB_sqlite_driver extends CI_DB {
* This function adds backticks if the table name has a period
* in it. Some DBs will get cranky unless periods are escaped
*
- * @access public
+ * @access private
* @param string the table name
* @return string
*/
- function escape_table($table)
+ function _escape_table($table)
{
if (stristr($table, '.'))
{
@@ -326,25 +313,7 @@ class CI_DB_sqlite_driver extends CI_DB {
return $table;
}
-
- // --------------------------------------------------------------------
-
- /**
- * Field data query
- *
- * Generates a platform-specific query so that the column data can be retrieved
- *
- * @access public
- * @param string the table name
- * @return object
- */
- function _field_data($table)
- {
- $sql = "SELECT * FROM ".$this->escape_table($table)." LIMIT 1";
- $query = $this->query($sql);
- return $query->field_data();
- }
-
+
// --------------------------------------------------------------------
/**
@@ -360,7 +329,7 @@ class CI_DB_sqlite_driver extends CI_DB {
*/
function _insert($table, $keys, $values)
{
- return "INSERT INTO ".$this->escape_table($table)." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
+ return "INSERT INTO ".$this->_escape_table($table)." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
}
// --------------------------------------------------------------------
@@ -383,7 +352,7 @@ class CI_DB_sqlite_driver extends CI_DB {
$valstr[] = $key." = ".$val;
}
- return "UPDATE ".$this->escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);
+ return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);
}
// --------------------------------------------------------------------
@@ -400,41 +369,9 @@ class CI_DB_sqlite_driver extends CI_DB {
*/
function _delete($table, $where)
{
- return "DELETE FROM ".$this->escape_table($table)." WHERE ".implode(" ", $where);
- }
-
- // --------------------------------------------------------------------
-
- /**
- * Show table query
- *
- * Generates a platform-specific query string so that the table names can be fetched
- *
- * @access public
- * @return string
- */
- function _show_tables()
- {
- return "SELECT name from sqlite_master WHERE type='table'";
+ return "DELETE FROM ".$this->_escape_table($table)." WHERE ".implode(" ", $where);
}
-
- // --------------------------------------------------------------------
- /**
- * Show columnn query
- *
- * Generates a platform-specific query string so that the column names can be fetched
- *
- * @access public
- * @param string the table name
- * @return string
- */
- function _show_columns($table = '')
- {
- // Not supported
- return FALSE;
- }
-
// --------------------------------------------------------------------
/**
@@ -476,6 +413,70 @@ class CI_DB_sqlite_driver extends CI_DB {
sqlite_close($conn_id);
}
+ // --------------------------------------------------------------------
+
+ /**
+ * Version number query string
+ *
+ * @access public
+ * @return string
+ */
+ function _version()
+ {
+ return sqlite_libversion();
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Show table query
+ *
+ * Generates a platform-specific query string so that the table names can be fetched
+ *
+ * @access public
+ * @return string
+ */
+ function _show_tables()
+ {
+ return "SELECT name from sqlite_master WHERE type='table'";
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Show columnn query
+ *
+ * Generates a platform-specific query string so that the column names can be fetched
+ *
+ * @access public
+ * @param string the table name
+ * @return string
+ */
+ function _show_columns($table = '')
+ {
+ // Not supported
+ return FALSE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Field data query
+ *
+ * Generates a platform-specific query so that the column data can be retrieved
+ *
+ * @access public
+ * @param string the table name
+ * @return object
+ */
+ function _field_data($table)
+ {
+ $sql = "SELECT * FROM ".$this->_escape_table($table)." LIMIT 1";
+ $query = $this->query($sql);
+ return $query->field_data();
+ }
+
+
}
?> \ No newline at end of file