diff --git a/sys/db/db_pdo.php b/sys/db/db_pdo.php index e2ef609..4c4b129 100644 --- a/sys/db/db_pdo.php +++ b/sys/db/db_pdo.php @@ -54,11 +54,11 @@ abstract class DB_PDO extends PDO { $this->statement =& $query; - /*if( ! (is_array($data) || is_object($data))) + if( ! (is_array($data) || is_object($data))) { trigger_error("Invalid data argument"); return FALSE; - }*/ + } // Bind the parameters foreach($data as $k => $value) @@ -125,15 +125,18 @@ abstract class DB_PDO extends PDO { * @param PDOStatement $statement * @return int */ - public function affected_rows($statement) + public function affected_rows($statement='') { - $this->statement = $statement; - + if ( ! empty($statement)) + { + $this->statement = $statement; + } + // Execute the query $this->statement->execute(); // Return number of rows affected - return $this->statement->rowCount; + return $this->statement->rowCount(); } // -------------------------------------------------------------------------- diff --git a/sys/db/drivers/firebird-ibase.php b/sys/db/drivers/firebird-ibase.php index b33cae4..e631b5e 100644 --- a/sys/db/drivers/firebird-ibase.php +++ b/sys/db/drivers/firebird-ibase.php @@ -65,7 +65,7 @@ class firebird extends DB_PDO { { // Firebird lacka a truncate command $sql = 'DELETE FROM "'.$table.'"'; - $this->query($sql); + $this->statement = $this->query($sql); } // -------------------------------------------------------------------------- diff --git a/sys/db/drivers/sqlite.php b/sys/db/drivers/sqlite.php index 7b50ef4..ed58c1e 100644 --- a/sys/db/drivers/sqlite.php +++ b/sys/db/drivers/sqlite.php @@ -46,13 +46,11 @@ class SQLite extends DB_PDO { { // SQLite has a TRUNCATE optimization, // but no support for the actual command. - $sql = 'DELETE FROM :table'; + $sql = 'DELETE FROM "'.$table.'"'; - $this->prepare_query($sql, array( - ':table' => $table - )); - - $this->statement->execute(); + $this->statement = $this->query($sql); + + return $this->statement; } // -------------------------------------------------------------------------- diff --git a/tests/databases/firebird.php b/tests/databases/firebird.php index 82a7cf6..b715ac0 100644 --- a/tests/databases/firebird.php +++ b/tests/databases/firebird.php @@ -103,6 +103,13 @@ class FirebirdTest extends UnitTestCase { $this->assertTrue($table_exists); }*/ + function TestTruncate() + { + $this->db->truncate('create_test'); + + $this->assertTrue($this->db->affected_rows() > 0); + } + function TestCommitTransaction() { $res = $this->db->beginTransaction(); diff --git a/tests/databases/sqlite.php b/tests/databases/sqlite.php index 314cbf4..6ce21ad 100644 --- a/tests/databases/sqlite.php +++ b/tests/databases/sqlite.php @@ -79,6 +79,12 @@ class SQLiteTest extends UnitTestCase { $this->assertEqual($dbs['create_test'], 'CREATE TABLE "create_test" (id INTEGER PRIMARY KEY, key TEXT , val TEXT )'); } + function TestTruncate() + { + $this->db->truncate('create_test'); + $this->assertIsA($this->db->affected_rows(), 'int'); + } + function TestPreparedStatements() { $sql = <<