Various db class improvements, more SQLite tests
This commit is contained in:
parent
589dfe01b9
commit
d29d433d3c
@ -61,6 +61,11 @@ abstract class DB_PDO extends PDO {
|
|||||||
// Bind the parameters
|
// Bind the parameters
|
||||||
foreach($data as $k => $value)
|
foreach($data as $k => $value)
|
||||||
{
|
{
|
||||||
|
if(is_numeric($k))
|
||||||
|
{
|
||||||
|
$k++;
|
||||||
|
}
|
||||||
|
|
||||||
$res = $query->bindValue($k, $value);
|
$res = $query->bindValue($k, $value);
|
||||||
|
|
||||||
if( ! $res)
|
if( ! $res)
|
||||||
@ -83,7 +88,7 @@ abstract class DB_PDO extends PDO {
|
|||||||
*/
|
*/
|
||||||
public function prepare_execute($sql, $params)
|
public function prepare_execute($sql, $params)
|
||||||
{
|
{
|
||||||
$this->prepare_query($sql, $params);
|
$this->statement =& $this->prepare_query($sql, $params);
|
||||||
$this->statement->execute();
|
$this->statement->execute();
|
||||||
|
|
||||||
return $this->statement;
|
return $this->statement;
|
||||||
@ -126,6 +131,20 @@ abstract class DB_PDO extends PDO {
|
|||||||
// Return number of rows affected
|
// Return number of rows affected
|
||||||
return $this->statement->rowCount;
|
return $this->statement->rowCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the last error for the current database connection
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function get_last_error()
|
||||||
|
{
|
||||||
|
$info = $this->errorInfo();
|
||||||
|
|
||||||
|
echo "Error: <pre>{$info[0]}:{$info[1]}\n{$info[2]}</pre>";
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -26,10 +26,10 @@ class SQLite extends DB_PDO {
|
|||||||
*
|
*
|
||||||
* @param string $dsn
|
* @param string $dsn
|
||||||
*/
|
*/
|
||||||
public function __construct($dsn)
|
public function __construct($dsn, $user=NULL, $pass=NULL)
|
||||||
{
|
{
|
||||||
// DSN is simply `sqlite:/path/to/db`
|
// DSN is simply `sqlite:/path/to/db`
|
||||||
parent::__construct("sqlite:{$dsn}");
|
parent::__construct("sqlite:{$dsn}", $user, $pass);
|
||||||
|
|
||||||
$class = __CLASS__."_manip";
|
$class = __CLASS__."_manip";
|
||||||
$this->manip = new $class;
|
$this->manip = new $class;
|
||||||
|
@ -68,7 +68,7 @@ class SQLite_manip extends db_manip {
|
|||||||
|
|
||||||
// Generate the sql for the creation of the table
|
// Generate the sql for the creation of the table
|
||||||
$sql = "CREATE TABLE \"{$name}\" (";
|
$sql = "CREATE TABLE \"{$name}\" (";
|
||||||
$sql .= implode(",", $columns);
|
$sql .= implode(", ", $columns);
|
||||||
$sql .= ")";
|
$sql .= ")";
|
||||||
|
|
||||||
return $sql;
|
return $sql;
|
||||||
|
@ -53,14 +53,47 @@ class SQLiteTest extends UnitTestCase {
|
|||||||
function TestCreateTable()
|
function TestCreateTable()
|
||||||
{
|
{
|
||||||
//Attempt to create the table
|
//Attempt to create the table
|
||||||
$sql = $this->db->manip->create_table('create_test', array('id' => 'INTEGER'), array('id' => 'PRIMARY KEY'));
|
$sql = $this->db->manip->create_table('create_test',
|
||||||
|
array(
|
||||||
|
'id' => 'INTEGER',
|
||||||
|
'key' => 'TEXT',
|
||||||
|
'val' => 'TEXT',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'id' => 'PRIMARY KEY'
|
||||||
|
)
|
||||||
|
);
|
||||||
$this->db->query($sql);
|
$this->db->query($sql);
|
||||||
|
|
||||||
//Check
|
//Check
|
||||||
$dbs = $this->db->get_tables();
|
$dbs = $this->db->get_tables();
|
||||||
$this->assertEqual($dbs['create_test'], 'CREATE TABLE "create_test" (id INTEGER PRIMARY KEY)');
|
$this->assertEqual($dbs['create_test'], 'CREATE TABLE "create_test" (id INTEGER PRIMARY KEY, key TEXT , val TEXT )');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function TestPreparedStatements()
|
||||||
|
{
|
||||||
|
$sql = <<<SQL
|
||||||
|
INSERT INTO "create_test" ("id", "key", "val")
|
||||||
|
VALUES (?,?,?)
|
||||||
|
SQL;
|
||||||
|
$statement =& $this->db->prepare_query($sql, array(1,"boogers", "Gross"));
|
||||||
|
|
||||||
|
$statement->execute();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function TestPrepareExecute()
|
||||||
|
{
|
||||||
|
$sql = <<<SQL
|
||||||
|
INSERT INTO "create_test" ("id", "key", "val")
|
||||||
|
VALUES (?,?,?)
|
||||||
|
SQL;
|
||||||
|
$this->db->prepare_execute($sql, array(
|
||||||
|
2, "works", 'also?'
|
||||||
|
));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function TestDeleteTable()
|
function TestDeleteTable()
|
||||||
{
|
{
|
||||||
//Make sure the table exists to delete
|
//Make sure the table exists to delete
|
||||||
@ -75,4 +108,5 @@ class SQLiteTest extends UnitTestCase {
|
|||||||
$dbs = $this->db->get_tables();
|
$dbs = $this->db->get_tables();
|
||||||
$this->assertTrue(empty($dbs['create_test']));
|
$this->assertTrue(empty($dbs['create_test']));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user