parent = $parent; $this->db_path = $db_path; /* We are starting disconnected */ $this->setConnStatus(false); /* Connect to MySQL Database */ $this->db_connect(); } // __construct() /** * PHPFSPOT_DB class deconstructor * * This destructor will close the current database connection. */ public function __destruct() { $this->db_disconnect(); } // _destruct() /** * PHPFSPOT_DB database connect * * This function will connect to the database via MDB2 */ private function db_connect() { 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; } } // db_connect() /** * PHPFSPOT_DB database disconnect * * This function will disconnected an established database connection. */ private function db_disconnect() { switch($this->parent->cfg->db_access) { case 'native': if($this->getConnStatus()) sqlite3_close($this->db); break; case 'pdo': $this->db = NULL; break; } } // db_disconnect() /** * PHPFSPOT_DB database query * * This function will execute a SQL query and return the result as * object. */ public function db_query($query = "") { if($this->getConnStatus()) { 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; } else $this->ThrowError("Can't execute query - we are not connected!"); } // db_query() /** * PHPFSPOT_DB database query & execute * * This function will execute a SQL query and return nothing. */ public function db_exec($query = "") { if($this->getConnStatus()) { 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!"); } // db_exec() public function db_fetch_object($resource) { switch($this->parent->cfg->db_access) { case 'native': return sqlite3_fetch_array($resource); case 'pdo': return $resource->fetch(); } } // db_fetch_object /** * PHPFSPOT_DB fetch ONE row * * This function will execute the given but only return the * first result. */ public function db_fetchSingleRow($query = "") { if($this->getConnStatus()) { $result = $this->db_query($query); switch($this->parent->cfg->db_access) { case 'native': $row = $result->fetchRow(); break; case 'pdo': $row = $result[0]; break; } return $row; } else $this->ThrowError("Can't fetch row - we are not connected!"); } // db_fetchSingleRow() /** * PHPFSPOT_DB number of affected rows * * This functions returns the number of affected rows but the * given SQL query. */ public function db_getNumRows($query = "") { /* Execute query */ $result = $this->db_query($query); /* Errors? */ if(PEAR::isError($result)) $this->throwError($result->getMessage()); return $result->numRows(); } // db_getNumRows() /** * PHPFSPOT_DB get primary key * * This function returns the primary key of the last * operated insert SQL query. */ public function db_getid() { /* Get the last primary key ID from execute query */ return mysql_insert_id($this->db->connection); } // db_getid() /** * PHPFSPOT_DB check table exists * * This function checks if the given table exists in the * database * @param string, table name * @return true if table found otherwise false */ public function db_check_table_exists($table_name = "") { if($this->getConnStatus()) { $result = $this->db_query("SELECT name FROM sqlite_master WHERE type='table'"); 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 $this->ThrowError("Can't check table - we are not connected!"); } // db_check_table_exists() /** * PHPFSPOT_DB get connection status * * This function checks the internal state variable if already * connected to database. */ private function setConnStatus($status) { $this->is_connected = $status; } // setConnStatus() /** * PHPFSPOT_DB set connection status * This function sets the internal state variable to indicate * current database connection status. */ private function getConnStatus() { return $this->is_connected; } // getConnStatus() /** * PHPFSPOT_DB throw error * * This function shows up error messages and afterwards through exceptions. */ private function ThrowError($string) { if(!defined('DB_NOERROR')) { print "

". $string ."

\n"; try { throw new Exception; } catch(Exectpion $e) { } } $this->last_error = $string; } // ThrowError() private function getLastError() { switch($this->parent->cfg->db_access) { case 'native': return sqlite3_error($this->db); case 'pdo': return "". $this->db->errorInfo(); } } // getLastError() } ?>