summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
Diffstat (limited to 'includes')
-rw-r--r--includes/database.inc65
-rw-r--r--includes/database.mysql.inc56
-rw-r--r--includes/database.pear.inc65
3 files changed, 127 insertions, 59 deletions
diff --git a/includes/database.inc b/includes/database.inc
index 9621193f1..4022fbc2a 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 000000000..1b14da5cd
--- /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 000000000..7f3da1a00
--- /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