From 7c181aba6dcf4fdee2cdada09d35aa718d25f431 Mon Sep 17 00:00:00 2001 From: Dries Buytaert <dries@buytaert.net> Date: Wed, 31 Oct 2001 20:33:23 +0000 Subject: [PATCH] - Made some improvements/updates to the database abstraction layer. --- includes/database.inc | 65 ++++--------------------------------- includes/database.mysql.inc | 56 ++++++++++++++++++++++++++++++++ includes/database.pear.inc | 65 +++++++++++++++++++++++++++++++++++++ 3 files changed, 127 insertions(+), 59 deletions(-) create mode 100644 includes/database.mysql.inc create mode 100644 includes/database.pear.inc diff --git a/includes/database.inc b/includes/database.inc index 9621193f1cf5..4022fbc2ab78 100644 --- a/includes/database.inc +++ b/includes/database.inc @@ -1,67 +1,14 @@ <?php -// $Id$ -require_once 'DB.php'; +$db_type = substr($db_url, 0, strpos($db_url, "://")); -/* -** Setup a database connection: -*/ - -$db_handle = DB::connect($db_url); -if (DB::isError($db_handle)) { - die ("Database problem: ". $db_handle->getMessage()); -} -$db_handle->setFetchMode(DB_FETCHMODE_ASSOC); - -function db_query($sql, $debug = 0) { - global $db_handle; - - $result = $db_handle->query($sql); - - if ($debug) { - print "<p>query: $sql<br />"; // error:". $result->getMessage() ."</p>"; - } - - if (DB::isError($result)) { - watchdog("error", "database: ". $result->getMessage() ."\nquery: ". htmlspecialchars($sql)); - } - - return $result; -} - -function db_fetch_object($result) { - if ($result) { - return $result->fetchRow(DB_FETCHMODE_OBJECT); - } -} - -function db_fetch_array($result) { - if ($result) { - return $result->fetchRow(DB_FETCHMODE_ASSOC); - } -} - -function db_num_rows($result) { - if ($result) { - return $result->numRows($result); - } +if (file_exists("includes/database.$db_type.inc")) { + include_once "includes/database.$db_type.inc"; } - -function db_result($result, $field = 0) { - if ($result) { - $tmp = $result->fetchRow(DB_FETCHMODE_ORDERED); - return $tmp[$field]; - } +else { + include_once "includes/database.pear.inc"; } -function db_error($result) { - global $db_handle; +db_connect($db_url); - if (DB::isError($db_handle)) { - return 1; - } - - return 0; -} - ?> \ No newline at end of file diff --git a/includes/database.mysql.inc b/includes/database.mysql.inc new file mode 100644 index 000000000000..1b14da5cd5db --- /dev/null +++ b/includes/database.mysql.inc @@ -0,0 +1,56 @@ +<?php + +function db_connect($url) { + $url = parse_url($url); + + mysql_pconnect($url["host"], $url["user"], $url["pass"]) or die(mysql_error()); + mysql_select_db(substr($url["path"], 1)) or die ("unable to select database"); + + // NOTE: we are using a persistent connection! +} + +function db_query($query, $debug = 0) { + + $result = mysql_query($query); + + if ($debug) { + print "<p>query: $query<br />error:". mysql_error() ."</p>"; + } + + if ($result) { + return $result; + } + else { + watchdog("error", "database: ". mysql_error() ."\nquery: ". htmlspecialchars($query)); + } +} + +function db_fetch_object($result) { + if ($result) { + return mysql_fetch_object($result); + } +} + +function db_fetch_array($result) { + if ($result) { + return mysql_fetch_array($result, MYSQL_ASSOC); + } +} + +function db_num_rows($result) { + if ($result) { + return mysql_num_rows($result); + } +} + +function db_result($result, $row = 0) { + if ($result && mysql_num_rows($result) > $row) { + return mysql_result($result, $row); + } +} + +function db_error() { + return mysql_errno(); +} + +?> \ No newline at end of file diff --git a/includes/database.pear.inc b/includes/database.pear.inc new file mode 100644 index 000000000000..7f3da1a0021b --- /dev/null +++ b/includes/database.pear.inc @@ -0,0 +1,65 @@ +<?php +// $Id$ + +require_once 'DB.php'; + +function db_connect($url) { + global $db_handle; + + $db_handle = DB::connect($url); + + if (DB::isError($db_handle)) { + die ("Database problem: ". $db_handle->getMessage()); + } + + $db_handle->setFetchMode(DB_FETCHMODE_ASSOC); +} + +function db_query($query, $debug = 0) { + global $db_handle; + + $result = $db_handle->query($query); + + if ($debug) { + print "<p>query: $query<br />"; // error:". $result->getMessage() ."</p>"; + } + + if (DB::isError($result)) { + watchdog("error", "database: ". $result->getMessage() ."\nquery: ". htmlspecialchars($query)); + } + + return $result; +} + +function db_fetch_object($result) { + if ($result) { + return $result->fetchRow(DB_FETCHMODE_OBJECT); + } +} + +function db_fetch_array($result) { + if ($result) { + return $result->fetchRow(DB_FETCHMODE_ASSOC); + } +} + +function db_num_rows($result) { + if ($result) { + return $result->numRows($result); + } +} + +function db_result($result, $row = 0) { + if ($result && $result->numRows($result) > $row) { + $tmp = $result->fetchRow(DB_FETCHMODE_ORDERED); + return $tmp[$row]; + } +} + +function db_error($result) { + global $db_handle; + + return DB::isError($db_handle); +} + +?> \ No newline at end of file -- GitLab