return $this->adapter->last_error();
}
+ function last_query_error() {
+ return $this->adapter->last_query_error();
+ }
}
?>
<?php
class Db_Mysql implements IDb {
private $link;
+ private $last_error;
function connect($host, $user, $pass, $db, $port) {
$this->link = mysql_connect($host, $user, $pass);
function query($query, $die_on_error = true) {
$result = @mysql_query($query, $this->link);
if (!$result) {
- $error = @mysql_error($this->link);
+ $this->last_error = @mysql_error($this->link);
@mysql_query("ROLLBACK", $this->link);
- user_error("Query $query failed: " . ($this->link ? $error : "No connection"),
+ user_error("Query $query failed: " . ($this->link ? $this->last_error : "No connection"),
$die_on_error ? E_USER_ERROR : E_USER_WARNING);
}
return $result;
return mysql_error();
}
+ function last_query_error() {
+ return $this->last_error;
+ }
+
function init() {
$this->query("SET time_zone = '+0:0'");
<?php
class Db_Mysqli implements IDb {
private $link;
+ private $last_error;
function connect($host, $user, $pass, $db, $port) {
if ($port)
function query($query, $die_on_error = true) {
$result = @mysqli_query($this->link, $query);
if (!$result) {
- $error = @mysqli_error($this->link);
+ $this->last_error = @mysqli_error($this->link);
@mysqli_query($this->link, "ROLLBACK");
- user_error("Query $query failed: " . ($this->link ? $error : "No connection"),
+ user_error("Query $query failed: " . ($this->link ? $this->last_error : "No connection"),
$die_on_error ? E_USER_ERROR : E_USER_WARNING);
}
return mysqli_error();
}
+ function last_query_error() {
+ return $this->last_error;
+ }
+
function init() {
$this->query("SET time_zone = '+0:0'");
<?php
class Db_Pgsql implements IDb {
private $link;
+ private $last_error;
function connect($host, $user, $pass, $db, $port) {
$string = "dbname=$db user=$user";
$result = @pg_query($this->link, $query);
if (!$result) {
- $error = @pg_last_error($this->link);
+ $this->last_error = @pg_last_error($this->link);
@pg_query($this->link, "ROLLBACK");
$query = htmlspecialchars($query); // just in case
- user_error("Query $query failed: " . ($this->link ? $error : "No connection"),
+ user_error("Query $query failed: " . ($this->link ? $this->last_error : "No connection"),
$die_on_error ? E_USER_ERROR : E_USER_WARNING);
}
return $result;
return pg_last_error($this->link);
}
+ function last_query_error() {
+ return $this->last_error;
+ }
+
function init() {
$this->query("set client_encoding = 'UTF-8'");
pg_set_client_encoding("UNICODE");
}
}
- function performUpdateTo($version) {
+ function performUpdateTo($version, $html_output = true) {
if ($this->getSchemaVersion() == $version - 1) {
$lines = $this->getSchemaLines($version);
foreach ($lines as $line) {
if (strpos($line, "--") !== 0 && $line) {
- db_query($line);
+ if (!db_query($line, false)) {
+ if ($html_output) {
+ print_notice("Query: $line");
+ print_error("Error: " . db_last_query_error());
+ } else {
+ _debug("Query: $line");
+ _debug("Error: " . db_last_query_error());
+ }
+
+ return false;
+ }
}
}
for ($i = $updater->getSchemaVersion() + 1; $i <= SCHEMA_VERSION; $i++) {
print "<li>Performing update up to version $i...";
- $result = $updater->performUpdateTo($i);
+ $result = $updater->performUpdateTo($i, true);
if (!$result) {
print "<span class='err'>FAILED!</span></li></ul>";
<input type=\"submit\" value=\"".__("Return to Tiny Tiny RSS")."\">
</form>";
- break;
+ return;
} else {
print "<span class='ok'>OK!</span></li>";
}
function close();
function affected_rows($result);
function last_error();
+ function last_query_error();
}
?>
return Db::get()->last_error();
}
+function db_last_query_error() {
+ return Db::get()->last_query_error();
+}
+
function db_quote($str){
return Db::get()->quote($str);
}
for ($i = $updater->getSchemaVersion() + 1; $i <= SCHEMA_VERSION; $i++) {
_debug("performing update up to version $i...");
- $result = $updater->performUpdateTo($i);
+ $result = $updater->performUpdateTo($i, false);
_debug($result ? "OK!" : "FAILED!");