From 5f717dc4a76364974723dbbf8e4d3b03e194812b Mon Sep 17 00:00:00 2001 From: Andreas Unterkircher Date: Thu, 1 Nov 2007 16:21:32 +0000 Subject: issue75, support for database access via PDO sqlite git-svn-id: file:///var/lib/svn/phpfspot/trunk@283 fa6a889d-dae6-447d-9e79-4ba9a3039384 --- phpfspot_db.php | 114 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 95 insertions(+), 19 deletions(-) (limited to 'phpfspot_db.php') diff --git a/phpfspot_db.php b/phpfspot_db.php index a3f1234..11ce7c8 100644 --- a/phpfspot_db.php +++ b/phpfspot_db.php @@ -65,14 +65,29 @@ class PHPFSPOT_DB { */ private function db_connect() { - if(($this->db = sqlite3_open($this->db_path)) === false) { + switch($this->parent->cfg->db_access) { + case 'native': + if(($this->db = sqlite3_open($this->db_path)) === false) { + $this->throwError("Unable to connect to database:" . $this->getLastError()); + $this->setConnStatus(false); + } + else { + $this->setConnStatus(true); + } + break; + case 'pdo': + try { + $this->db = new PDO("sqlite:".$this->db_path); + $this->setConnStatus(true); + } + catch (Exception $e) { + $this->throwError("Unable to connect to database:" . $e->getMessage()); + $this->setConnStatus(false); + } + break; - $this->throwError("Unable to connect to database:" . $this->getLastError()); - $this->setConnStatus(false); } - $this->setConnStatus(true); - } // db_connect() /** @@ -82,8 +97,15 @@ class PHPFSPOT_DB { */ private function db_disconnect() { - if($this->getConnStatus()) - sqlite3_close($this->db); + switch($this->parent->cfg->db_access) { + case 'native': + if($this->getConnStatus()) + sqlite3_close($this->db); + break; + case 'pdo': + $this->db = NULL; + break; + } } // db_disconnect() @@ -97,8 +119,23 @@ class PHPFSPOT_DB { { if($this->getConnStatus()) { - if(($result = sqlite3_query($this->db, $query)) === false) - $this->ThrowError($this->getLastError()); + switch($this->parent->cfg->db_access) { + case 'native': + if(($result = sqlite3_query($this->db, $query)) === false) + $this->ThrowError($this->getLastError()); + break; + case 'pdo': + try{ + $result = $this->db->query($query); + return $result; + } + catch (Exception $e) { + $this->ThrowError($e->getMessage()); + $result= NULL; + } + break; + + } return $result; } @@ -116,9 +153,20 @@ class PHPFSPOT_DB { { if($this->getConnStatus()) { - if(($result = sqlite3_exec($this->db, $query)) === false) - $this->ThrowError($this->getLastError()); - + switch($this->parent->cfg->db_access) { + case 'native': + if(($result = sqlite3_exec($this->db, $query)) === false) + $this->ThrowError($this->getLastError()); + break; + case 'pdo': + try { + $result = $this->db->query($query); + } + catch (Exception $e){ + $this->ThrowError($e->getLMessage()); + } + break; + } } else $this->ThrowError("Can't execute query - we are not connected!"); @@ -127,7 +175,12 @@ class PHPFSPOT_DB { public function db_fetch_object($resource) { - return sqlite3_fetch_array($resource); + switch($this->parent->cfg->db_access) { + case 'native': + return sqlite3_fetch_array($resource); + case 'pdo': + return $resource->fetch(); + } } // db_fetch_object @@ -142,7 +195,14 @@ class PHPFSPOT_DB { if($this->getConnStatus()) { $result = $this->db_query($query); - $row = $result->fetchRow(); + switch($this->parent->cfg->db_access) { + case 'native': + $row = $result->fetchRow(); + break; + case 'pdo': + $row = $result[0]; + break; + } return $row; } else @@ -195,10 +255,21 @@ class PHPFSPOT_DB { if($this->getConnStatus()) { $result = $this->db_query("SELECT name FROM sqlite_master WHERE type='table'"); - while($table = $this->db_fetch_object($result)) { - if($table['name'] == $table_name) - return true; - } + switch($this->parent->cfg->db_access) { + case 'native': + while($table = $this->db_fetch_object($result)) { + if($table['name'] == $table_name) + return true; + } + break; + case 'pdo': + foreach($result as $table ){ + if($table['NAME'] == $table_name) + return true; + } + break; + } + return false; } else @@ -251,7 +322,12 @@ class PHPFSPOT_DB { private function getLastError() { - return sqlite3_error($this->db); + switch($this->parent->cfg->db_access) { + case 'native': + return sqlite3_error($this->db); + case 'pdo': + return "". $this->db->errorInfo(); + } } // getLastError() -- cgit v1.2.3-18-g5258