/** * Prepare database connection. * * @param string $dsn (default = SETTINGS_DSN) * @param map $opt (default = [ 'table' => 'language', 'language' => SETTINGS_LANGUAGE, 'default' => 'txt' ]) * @param string $language (default = SETTINGS_LANGUAGE) */ public function setDSN($dsn = SETTINGS_DSN, $opt = ['table' => 'language', 'use' => SETTINGS_LANGUAGE, 'default' => 'txt']) { $this->db = Database::getInstance($dsn); $query_map = ['@query_prefix' => '', 'escape_name@table' => $opt['table'], 'escape_name@use' => $opt['use'], 'escape_name@default' => $opt['default'], 'select' => "SELECT {:=@use} AS lang, {:=@default} AS default, txt FROM {:=@table} WHERE id='{:=id}'", 'insert' => "INSERT INTO {:=@table} (id, lchange, txt) VALUES ('{:=id}', NOW(), '{:=txt}')", 'delete' => "DELETE FROM {:=@table} WHERE id='{:=id}'"]; $this->db->setQueryHash($query_map); $this->createTable($opt['table']); }
/** * Set database connection string. Change table name and add extra cols if necessary. * * @param string $dsn * @param string $table (default = category) * @param map $extra_cols */ public function setDSN($dsn, $table = 'category', $extra_cols = []) { $db = new Database(); $db->setDSN($dsn); $table = ADatabase::escape_name($table); $db->setQuery('drop', "DROP TABLE IF EXISTS {$table}"); $query = <<<END CREATE TABLE {$table} ( id int NOT NULL AUTO_INCREMENT, pid int, name varchar(255) NOT NULL, PRIMARY KEY (id), FOREIGN KEY (pid) REFERENCES {$table}(id) ON DELETE CASCADE ON UPDATE CASCADE ); END; $db->setQuery('create', $query); $db->setQuery('insert', "INSERT INTO {$table} (pid, name) VALUES ('{:=pid}', '{:=name}')"); $db->setQuery('select_name_pid', "SELECT * FROM {$table} WHERE name='{:=name}' AND pid='{:=pid}'"); $db->setQuery('select_id', "SELECT * FROM {$table} WHERE id='{:=id}'"); }
/** * Set database connection string. * * @tok {sql_name:}a b{:sql_name} -> `a b` * @see ADatabase::setDSN() * @param string $arg * @return empty string */ public function tok_sql_dsn($dsn) { $this->db = Database::getInstance($dsn); return ''; }