]> git.wh0rd.org - tt-rss.git/blobdiff - db.php
block mysql versions where true is undefined in sanity_check
[tt-rss.git] / db.php
diff --git a/db.php b/db.php
index a2614cbcee0fb7cf5216ba9b62a0380ba70d6a6a..7766c0563a8f27ccc2ba6284169f90961bd2a762 100644 (file)
--- a/db.php
+++ b/db.php
@@ -5,20 +5,35 @@ require_once "config.php";
 function db_connect($host, $user, $pass, $db) {
        if (DB_TYPE == "pgsql") {       
                          
-               $string = "dbname=$db user=$user password=$pass";
+               $string = "dbname=$db user=$user password=$pass";       
                
                if ($host) {
-                       $string .= "host=$host";
+                       $string .= " host=$host";
                }
 
-               return pg_connect($string);
+               if (defined('DB_PORT')) {
+                       $string = "$string port=" . DB_PORT;
+               }
+
+               $link = pg_connect($string);
+
+               if (!$link) {
+                       die("Connection failed: " . pg_last_error($link));
+               }
+
+               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;
        }
 }
 
@@ -30,11 +45,35 @@ function db_escape_string($s) {
        }
 }
 
-function db_query($link, $query) {
+/* I hate MySQL :( */
+
+function db_escape_string_2($s, $link) {
+       if (DB_TYPE == "pgsql") {       
+               return pg_escape_string($s);
+       } else {
+               return mysql_real_escape_string($s, $link);
+       }
+}
+
+function db_query($link, $query, $die_on_error = true) {
        if (DB_TYPE == "pgsql") {
-               return pg_query($link, $query);
+               $result = pg_query($link, $query);
+               if (!$result) {
+                       $query = htmlspecialchars($query); // just in case
+                       if ($die_on_error) {
+                               die("Query <i>$query</i> failed: " . pg_last_error($link));                     
+                       }
+               }
+               return $result;
        } else if (DB_TYPE == "mysql") {
-               return mysql_query($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 +106,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 +126,12 @@ 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);
+       }
+}
+?>