]> git.wh0rd.org - tt-rss.git/blobdiff - db.php
reduce the number of always included libraries
[tt-rss.git] / db.php
diff --git a/db.php b/db.php
index a2614cbcee0fb7cf5216ba9b62a0380ba70d6a6a..0682b58f829fa09dbd43ed14720cc1606f1bba0d 100644 (file)
--- a/db.php
+++ b/db.php
@@ -1,48 +1,79 @@
-<?
+<?php
 
 require_once "config.php";
 
 function db_connect($host, $user, $pass, $db) {
-       if (DB_TYPE == "pgsql") {       
-                         
-               $string = "dbname=$db user=$user password=$pass";
-               
+       if (DB_TYPE == "pgsql") {
+
+               $string = "dbname=$db user=$user";
+
+               if ($pass) {
+                       $string .= " password=$pass";
+               }
+
                if ($host) {
-                       $string .= "host=$host";
+                       $string .= " host=$host";
+               }
+
+               if (defined('DB_PORT')) {
+                       $string = "$string port=" . DB_PORT;
+               }
+
+               $link = pg_connect($string);
+
+               if (!$link) {
+                       die("Connection failed: " . pg_last_error($link));
                }
 
-               return pg_connect($string);
+               return $link;
 
        } else if (DB_TYPE == "mysql") {
                $link = mysql_connect($host, $user, $pass);
                if ($link) {
-                       mysql_select_db($db, $link);
+                       $result = mysql_select_db($db, $link);
+                       if (!$result) {
+                               die("Can't select DB: " . mysql_error($link));
+                       }
+                       return $link;
+               } else {
+                       die("Connection failed: " . mysql_error($link));
                }
-               return $link;
        }
 }
 
-function db_escape_string($s) {
-       if (DB_TYPE == "pgsql") {       
+function db_escape_string($s, $strip_tags = true) {
+       if ($strip_tags) $s = strip_tags($s);
+
+       if (DB_TYPE == "pgsql") {
                return pg_escape_string($s);
        } else {
                return mysql_real_escape_string($s);
        }
 }
 
-function db_query($link, $query) {
-       if (DB_TYPE == "pgsql") {
-               return pg_query($link, $query);
-       } else if (DB_TYPE == "mysql") {
-               return mysql_query($query, $link);
-       }
-}
+function db_query($link, $query, $die_on_error = true) {
+       //if ($_REQUEST["qlog"])
+       //      error_log($_SESSION["uid"] . ":" . $_REQUEST["op"] . "/" . $_REQUEST["subop"] .
+       //              " $query\n", 3, "/tmp/ttrss-query.log");
 
-function db_query_2($query) {
        if (DB_TYPE == "pgsql") {
-               return pg_query($query);
+               $result = pg_query($link, $query);
+               if (!$result) {
+                       $query = htmlspecialchars($query); // just in case
+                       if ($die_on_error) {
+                               die("Query <i>$query</i> failed [$result]: " . pg_last_error($link));
+                       }
+               }
+               return $result;
        } else if (DB_TYPE == "mysql") {
-               return mysql_query($link);
+               $result = mysql_query($query, $link);
+               if (!$result) {
+                       $query = htmlspecialchars($query);
+                       if ($die_on_error) {
+                               die("Query <i>$query</i> failed: " . mysql_error($link));
+                       }
+               }
+               return $result;
        }
 }
 
@@ -67,12 +98,17 @@ function db_fetch_result($result, $row, $param) {
        if (DB_TYPE == "pgsql") {
                return pg_fetch_result($result, $row, $param);
        } else if (DB_TYPE == "mysql") {
-               // FIXME
-               $line = mysql_fetch_assoc($result);
-               return $line[$param];
+               // I hate incoherent naming of PHP functions
+               return mysql_result($result, $row, $param);
        }
 }
 
+function db_unescape_string($str) {
+       $tmp = str_replace("\\\"", "\"", $str);
+       $tmp = str_replace("\\'", "'", $tmp);
+       return $tmp;
+}
+
 function db_close($link) {
        if (DB_TYPE == "pgsql") {
 
@@ -82,3 +118,25 @@ function db_close($link) {
                return mysql_close($link);
        }
 }
+
+function db_affected_rows($link, $result) {
+       if (DB_TYPE == "pgsql") {
+               return pg_affected_rows($result);
+       } else if (DB_TYPE == "mysql") {
+               return mysql_affected_rows($link);
+       }
+}
+
+function db_last_error($link) {
+       if (DB_TYPE == "pgsql") {
+               return pg_last_error($link);
+       } else if (DB_TYPE == "mysql") {
+               return mysql_error($link);
+       }
+}
+
+function db_quote($str){
+       return("'$str'");
+}
+
+?>