Firebird exceptions
This commit is contained in:
parent
b75209d486
commit
e89a2cedba
@ -19,7 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
class firebird extends DB_PDO {
|
class firebird extends DB_PDO {
|
||||||
|
|
||||||
protected $statement, $trans, $count, $result;
|
protected $statement, $trans, $count, $result, $conn;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open the link to the database
|
* Open the link to the database
|
||||||
@ -34,13 +34,12 @@ class firebird extends DB_PDO {
|
|||||||
// pass around the resource that this provides.
|
// pass around the resource that this provides.
|
||||||
// Since the resource is not required by the
|
// Since the resource is not required by the
|
||||||
// functions that would use it, I'm dumping it.
|
// functions that would use it, I'm dumping it.
|
||||||
$conn = @ibase_connect($dbpath, $user, $pass, 'utf-8');
|
$this->conn = ibase_connect($dbpath, $user, $pass, 'utf-8');
|
||||||
|
|
||||||
// Throw an exception to make this match other pdo classes
|
// Throw an exception to make this match other pdo classes
|
||||||
if ( ! is_resource($conn))
|
if ( ! is_resource($this->conn))
|
||||||
{
|
{
|
||||||
throw new PDOException(ibase_errmsg());
|
throw new PDOException(ibase_errcode() . "\n" . ibase_errmsg());
|
||||||
die();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$class = __CLASS__."_sql";
|
$class = __CLASS__."_sql";
|
||||||
@ -96,10 +95,9 @@ class firebird extends DB_PDO {
|
|||||||
|
|
||||||
// Throw the error as a exception
|
// Throw the error as a exception
|
||||||
// if there is one
|
// if there is one
|
||||||
if ($this->statement === FALSE)
|
if (ibase_errmsg() !== FALSE)
|
||||||
{
|
{
|
||||||
throw new PDOException(ibase_errmsg());
|
throw new PDOException(ibase_errcode() . "\n" . ibase_errmsg());
|
||||||
die();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->statement;
|
return $this->statement;
|
||||||
@ -118,17 +116,24 @@ class firebird extends DB_PDO {
|
|||||||
switch($fetch_style)
|
switch($fetch_style)
|
||||||
{
|
{
|
||||||
case PDO::FETCH_OBJ:
|
case PDO::FETCH_OBJ:
|
||||||
return ibase_fetch_object($this->statement, IBASE_FETCH_BLOBS);
|
$row = @ibase_fetch_object($this->statement, IBASE_FETCH_BLOBS);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PDO::FETCH_NUM:
|
case PDO::FETCH_NUM:
|
||||||
return ibase_fetch_row($this->statement, IBASE_FETCH_BLOBS);
|
$row = @ibase_fetch_row($this->statement, IBASE_FETCH_BLOBS);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return ibase_fetch_assoc($this->statement, IBASE_FETCH_BLOBS);
|
$row = @ibase_fetch_assoc($this->statement, IBASE_FETCH_BLOBS);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ibase_errmsg() !== FALSE)
|
||||||
|
{
|
||||||
|
throw new PDOException(ibase_errcode() . "\n" . ibase_errmsg());
|
||||||
|
}
|
||||||
|
|
||||||
|
return $row;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
@ -168,8 +173,7 @@ class firebird extends DB_PDO {
|
|||||||
// Throw the error as an exception
|
// Throw the error as an exception
|
||||||
if ($this->statement === FALSE)
|
if ($this->statement === FALSE)
|
||||||
{
|
{
|
||||||
throw new PDOException(ibase_errmsg());
|
throw new PDOException(ibase_errcode() . "\n" . ibase_errmsg());
|
||||||
die();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->statement;
|
return $this->statement;
|
||||||
@ -271,7 +275,7 @@ SQL;
|
|||||||
*/
|
*/
|
||||||
public function beginTransaction()
|
public function beginTransaction()
|
||||||
{
|
{
|
||||||
if(($this->trans = ibase_trans()) !== NULL)
|
if(($this->trans = ibase_trans($this->conn, IBASE_DEFAULT)) !== FALSE)
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -33,13 +33,21 @@ class FirebirdTest extends UnitTestCase {
|
|||||||
function setUp()
|
function setUp()
|
||||||
{
|
{
|
||||||
$dbpath = TEST_DIR.DS.'test_dbs'.DS.'FB_TEST_DB.FDB';
|
$dbpath = TEST_DIR.DS.'test_dbs'.DS.'FB_TEST_DB.FDB';
|
||||||
$this->db = new Firebird($dbpath);
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$this->db = new Firebird('localhost:'.$dbpath, 'sysdba', 'masterkey');
|
||||||
|
}
|
||||||
|
catch(PDOException $e)
|
||||||
|
{
|
||||||
|
die('Firebird connection fail: '.$e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$this->tables = $this->db->get_tables();
|
$this->tables = $this->db->get_tables();
|
||||||
}
|
}
|
||||||
|
|
||||||
function tearDown()
|
function tearDown()
|
||||||
{
|
{
|
||||||
unset($this->db);
|
|
||||||
unset($this->tables);
|
unset($this->tables);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user