public function __construct() { $db = Database::get(); $this->isSqlite = App::DB_TYPE == 'sqlite'; if ($this->isSqlite) { $query = $db->prepare("select name from sqlite_master where type='table'"); } else { $query = $db->prepare("show tables from " . DB_NAME); } $query->execute(); //$tables = array(); while ($rows = $query->fetch(Database::FETCH_CLASSTYPE)) { if ($this->isSqlite) { $tableQuery = $db->prepare("PRAGMA TABLE_INFO(" . $rows[0] . ");"); } else { $tableQuery = $db->prepare("show columns from " . $rows[0]); } $tableQuery->execute(); $rows['columns'] = array(); while ($tableRows = $tableQuery->fetch(Database::FETCH_OBJ)) { $rows['columns'][] = $tableRows; } $this->genFile($rows); } }
/** * Static method get * * @param array $group * @return \helpers\database */ public static function get($group = false) { // Determining if exists or it's not empty, then use default group defined in config if (!$group) { $group = array('type' => App::DB_TYPE, 'host' => App::DB_HOST, 'name' => App::DB_NAME, 'user' => App::DB_USER, 'pass' => App::DB_PASS); if ($group['type'] == 'sqlite') { $group['file'] = App::DB_FILE; } } else { $group = $group; } // Group information $type = $group['type']; $host = $group['host']; $name = $group['name']; $user = $group['user']; $pass = $group['pass']; if (isset($group['file'])) { $file = $group['file']; } // ID for database based on the group information $id = "{$type}.{$host}.{$name}.{$user}.{$pass}"; // Checking if the same if (isset(self::$instances[$id])) { return self::$instances[$id]; } try { // I've run into problem where // SET NAMES "UTF8" not working on some hostings. // Specifiying charset in DSN fixes the charset problem perfectly! if (isset($file)) { $instance = new Database("{$type}:{$file}"); } else { $instance = new Database("{$type}:host={$host};dbname={$name};charset=utf8", $user, $pass); } $instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Setting Database into $instances to avoid duplication self::$instances[$id] = $instance; return $instance; } catch (PDOException $e) { //in the event of an error record the error to errorlog.html Debug::alert($e); } }
/** * create a new instance of the database helper */ public function __construct() { //connect to PDO here. $this->_db = Database::get(); }