]> git.wh0rd.org - tt-rss.git/blobdiff - classes/db/mysqli.php
pngcrush.sh
[tt-rss.git] / classes / db / mysqli.php
index e82f6630007fed0f211c00c20fff1bbb84e955b1..a05b121fcf694bfa73d3ee89b8ff5d03c66644c6 100644 (file)
@@ -1,16 +1,21 @@
 <?php
 class Db_Mysqli implements IDb {
        private $link;
+       private $last_error;
 
        function connect($host, $user, $pass, $db, $port) {
-               $this->link = mysqli_connect($host, $user, $pass, $db, $port);
+               if ($port)
+                       $this->link = mysqli_connect($host, $user, $pass, $db, $port);
+               else
+                       $this->link = mysqli_connect($host, $user, $pass, $db);
 
                if ($this->link) {
                        $this->init();
 
                        return $this->link;
                } else {
-                       die("Unable to connect to database (as $user to $host, database $db): " . mysqli_error());
+                       print("Unable to connect to database (as $user to $host, database $db): " . mysqli_connect_error());
+                       exit(102);
                }
        }
 
@@ -21,9 +26,12 @@ class Db_Mysqli implements IDb {
        }
 
        function query($query, $die_on_error = true) {
-               $result = mysqli_query($this->link, $query);
+               $result = @mysqli_query($this->link, $query);
                if (!$result) {
-                       user_error("Query $query failed: " . ($this->link ? mysqli_error($this->link) : "No connection"),
+                       $this->last_error = @mysqli_error($this->link);
+
+                       @mysqli_query($this->link, "ROLLBACK");
+                       user_error("Query $query failed: " . ($this->link ? $this->last_error : "No connection"),
                                $die_on_error ? E_USER_ERROR : E_USER_WARNING);
                }
 
@@ -57,18 +65,21 @@ class Db_Mysqli implements IDb {
        }
 
        function last_error() {
-               return mysqli_error();
+               return mysqli_error($this->link);
+       }
+
+       function last_query_error() {
+               return $this->last_error;
        }
 
        function init() {
                $this->query("SET time_zone = '+0:0'");
 
                if (defined('MYSQL_CHARSET') && MYSQL_CHARSET) {
-                       $this->query("SET NAMES " . MYSQL_CHARSET);
+                       mysqli_set_charset($this->link, MYSQL_CHARSET);
                }
 
                return true;
        }
 
 }
-?>