From 66773789e392305bba4cdf7ed8e6ae3b8380de51 Mon Sep 17 00:00:00 2001 From: svncommit <devs@roundcube.net> Date: Thu, 27 Oct 2005 09:45:33 -0400 Subject: [PATCH] --- program/include/rcube_db.inc | 72 +++++++++++++++++++++++++++-------- 1 files changed, 55 insertions(+), 17 deletions(-) diff --git a/program/include/rcube_db.inc b/program/include/rcube_db.inc index 7d9d1bb..a987d2e 100755 --- a/program/include/rcube_db.inc +++ b/program/include/rcube_db.inc @@ -101,9 +101,27 @@ $this->db_connected = true; } - // Query database (read operations) + // Query database - function query($query) + function query() + { + $params = func_get_args(); + $query = array_shift($params); + + return $this->_query($query, 0, 0, $params); + } + + function limitquery() + { + $params = func_get_args(); + $query = array_shift($params); + $offset = array_shift($params); + $numrows = array_shift($params); + + return $this->_query($query, $offset, $numrows, $params); + } + + function _query($query, $offset, $numrows, $params) { // Read or write ? if (strtolower(trim(substr($query,0,6)))=='select') @@ -115,28 +133,25 @@ if ($this->db_provider == 'sqlite') $query = $this->_sqlite_prepare_query($query); - - $result = $this->db_handle->query($query); + if ($numrows || $offset) + { + $result = $this->db_handle->limitQuery($query,$offset,$numrows,$params); + } + else + $result = $this->db_handle->query($query,$params); + if (DB::isError($result)) + { raise_error(array('code' => 500, 'type' => 'db', 'line' => __LINE__, 'file' => __FILE__, 'message' => $result->getMessage()), TRUE, FALSE); - + return false; + } + return $this->_add_result($result, $query); - } - - function db_execute ($query) - { - $this->db_connect('w'); - - if ($this->db_provider == 'sqlite') - $query = $this->_sqlite_prepare_query($query); - - $result = $this->db_handle->query($query); - } function num_rows($res_id=NULL) @@ -177,8 +192,11 @@ return $result; case 'mysql': // This is unfortuneate - return mysql_insert_id(); + return mysql_insert_id($this->db_handle->connection); + case 'mysqli': + return mysqli_insert_id($this->db_handle->connection); + case 'sqlite': return sqlite_last_insert_rowid($this->db_handle->connection); @@ -202,6 +220,26 @@ return $result->fetchRow(DB_FETCHMODE_ASSOC); } + function quoteIdentifier ( $str ) + { + if (!$this->db_handle) + $this->db_connect('r'); + + return $this->db_handle->quoteIdentifier($str); + } + + function unixtimestamp($field) + { + switch($this->db_provider) + { + case 'pgsql': + return "EXTRACT (EPOCH FROM $field)"; + break; + default: + return "UNIX_TIMESTAMP($field)"; + } + } + function _add_result($res, $query) { // sql error occured -- Gitblit v1.9.1