diff --git a/dibi/dibi.php b/dibi/dibi.php index c5559f2a..cb7541e6 100644 --- a/dibi/dibi.php +++ b/dibi/dibi.php @@ -14,11 +14,11 @@ * @license GNU GENERAL PUBLIC LICENSE v2 * @package dibi * @category Database - * @version 0.7f $Revision$ $Date$ + * @version 0.7g $Revision$ $Date$ */ -define('DIBI', 'Version 0.7f $Revision$'); +define('DIBI', 'Version 0.7g $Revision$'); if (version_compare(PHP_VERSION , '5.0.3', '<')) @@ -145,7 +145,7 @@ class dibi * @return void * @throw DibiException */ - static public function connect($config, $name = '1') + static public function connect($config, $name='1') { // DSN string if (is_string($config)) @@ -188,15 +188,23 @@ class dibi /** * Retrieve active connection * + * @param string connection registy name * @return object DibiDriver object. * @throw DibiException */ - static public function getConnection() + static public function getConnection($name=NULL) { - if (!self::$conn) - throw new DibiException('Dibi is not connected to database'); + if ($name === NULL) { + if (!self::$conn) + throw new DibiException('Dibi is not connected to database'); - return self::$conn; + return self::$conn; + } + + if (!isset(self::$registry[$name])) + throw new DibiException("There is no connection named '$name'."); + + return self::$registry[$name]; } @@ -210,11 +218,7 @@ class dibi */ static public function activate($name) { - if (!isset(self::$registry[$name])) - throw new DibiException("There is no connection named '$name'."); - - // change active connection - self::$conn = self::$registry[$name]; + self::$conn = self::getConnection($name); } diff --git a/dibi/drivers/sqlite.php b/dibi/drivers/sqlite.php index 1e505f26..8cb3cd62 100644 --- a/dibi/drivers/sqlite.php +++ b/dibi/drivers/sqlite.php @@ -29,8 +29,7 @@ class DibiSqliteDriver extends DibiDriver private $conn, $insertId = FALSE, - $affectedRows = FALSE, - $errorMsg; + $affectedRows = FALSE; public $formats = array( @@ -75,8 +74,7 @@ class DibiSqliteDriver extends DibiDriver { $this->insertId = $this->affectedRows = FALSE; - $this->errorMsg = ''; - $res = @sqlite_query($this->conn, $sql, SQLITE_ASSOC, $this->errorMsg); + $res = @sqlite_query($this->conn, $sql, SQLITE_ASSOC); if ($res === FALSE) return FALSE; @@ -125,9 +123,10 @@ class DibiSqliteDriver extends DibiDriver public function errorInfo() { + $code = sqlite_last_error($this->conn); return array( - 'message' => $this->errorMsg, - 'code' => NULL, + 'message' => sqlite_error_string($code), + 'code' => $code, ); } diff --git a/dibi/libs/exception.php b/dibi/libs/exception.php index 088d70d3..a5a5c968 100644 --- a/dibi/libs/exception.php +++ b/dibi/libs/exception.php @@ -36,6 +36,7 @@ class DibiException extends Exception { $this->dbError = $dbError; $this->sql = $sql; + parent::__construct($message); } @@ -57,7 +58,7 @@ class DibiException extends Exception $s = parent::__toString(); if ($this->dbError) { - $s .= "\nERROR: "; + $s .= "\n\nDatabase error: "; if (isset($this->dbError['code'])) $s .= "[" . $this->dbError['code'] . "] "; diff --git a/version.txt b/version.txt index ba8995ea..01dd9c10 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -Dibi Version 0.7f +Dibi Version 0.7g