]> git.wh0rd.org - tt-rss.git/blobdiff - classes/db/mysql.php
reinstate error handlers; better DB error reporting on failed queries
[tt-rss.git] / classes / db / mysql.php
index 1706283048c109a7eb5b9372344bb8787158252b..241d2a063b42234a4b614528b5fc9c58690d4552 100644 (file)
@@ -1,71 +1,70 @@
 <?php
+class Db_Mysql implements IDb {
+       private $link;
+
+       function connect($host, $user, $pass, $db, $port) {
+               $this->link = mysql_connect($host, $user, $pass);
+               if ($this->link) {
+                       $result = mysql_select_db($db, $this->link);
+                       if (!$result) {
+                               die("Can't select DB: " . mysql_error($this->link));
+                       }
+
+                       $this->init();
+
+                       return $this->link;
+               } else {
+                       die("Unable to connect to database (as $user to $host, database $db): " . mysql_error());
+               }
+       }
+
+       function escape_string($s, $strip_tags = true) {
+               return mysql_real_escape_string($s, $this->link);
+       }
+
+       function query($query, $die_on_error = true) {
+               $result = mysql_query($query, $this->link);
+               if (!$result) {
+                       user_error("Query $query failed: " . ($this->link ? mysql_error($this->link) : "No connection"),
+                               $die_on_error ? E_USER_ERROR : E_USER_WARNING);
+               }
+               return $result;
+       }
+
+       function fetch_assoc($result) {
+               return mysql_fetch_assoc($result);
+       }
+
+
+       function num_rows($result) {
+               return mysql_num_rows($result);
+       }
+
+       function fetch_result($result, $row, $param) {
+               return mysql_result($result, $row, $param);
+       }
+
+       function close() {
+               return mysql_close($this->link);
+       }
+
+       function affected_rows($result) {
+               return mysql_affected_rows($this->link);
+       }
+
+       function last_error() {
+               return mysql_affected_rows($this->link);
+       }
+
+       function init() {
+               $this->query("SET time_zone = '+0:0'");
+
+               if (defined('MYSQL_CHARSET') && MYSQL_CHARSET) {
+                       $this->query("SET NAMES " . MYSQL_CHARSET);
+               }
+
+               return true;
+       }
 
-class Db_Mysql extends Db_Abstract
-{
-    public function connect($host, $user, $pass, $db)
-    {
-        $link = mysql_connect($host, $user, $pass);
-        if ($link) {
-            $result = mysql_select_db($db, $link);
-            if (!$result) {
-                die("Can't select DB: " . mysql_error($link));
-            }
-            $this->dbconn = $link;
-            return $link;
-        } else {
-            die("Unable to connect to database (as $user to $host, database $db): " . mysql_error());
-        }
-    }
-
-    public function init()
-    {
-        db_query($this->dbconn, "SET time_zone = '+0:0'");
-
-        if (defined('MYSQL_CHARSET') && MYSQL_CHARSET) {
-            db_query($this->dbconn, "SET NAMES " . MYSQL_CHARSET);
-        }
-    }
-
-    public function escape_string($s, $strip_tags = true)
-    {
-        if ($strip_tags) $s = strip_tags($s);
-        return mysql_real_escape_string($s);
-    }
-
-    public function query($query, $die_on_error = true)
-    {
-        $result = mysql_query($query, $this->dbconn);
-        if (!$result) {
-            $query = htmlspecialchars($query);
-            if ($die_on_error) {
-                die("Query <i>$query</i> failed: " . ($this->dbconn ? mysql_error($this->dbconn) : "No connection"));
-            }
-        }
-        return $result;
-    }
-
-    public function fetch_assoc($result) {
-        return mysql_fetch_assoc($result);
-    }
-
-    public function num_rows($result) {
-        return mysql_num_rows($result);
-    }
-
-    public function fetch_result($result, $row, $param) {
-        // I hate incoherent naming of PHP functions
-        return mysql_result($result, $row, $param);
-    }
-
-    public function close() {
-        return mysql_close($this->dbconn);
-    }
-
-    public function affected_rows($result) {
-        return mysql_affected_rows($this->dbconn);
-    }
-
-    public function last_error() {
-        return mysql_error($this->dbconn);
-    }
 }
+?>