last_query; } /* * Returns the DB drivers error info * * @return mixed the DB drivers error info */ public static function error_info($db = null) { return \Database_Connection::instance($db)->error_info(); } /* * Returns a database instance * * @return Database_Connection */ public static function instance($db = null) { return \Database_Connection::instance($db); } /** * Create a new [Database_Query_Builder_Select]. Each argument will be * treated as a column. To generate a `foo AS bar` alias, use an array. * * // SELECT id, username * $query = DB::select('id', 'username'); * * // SELECT id AS user_id * $query = DB::select(array('id', 'user_id')); * * @param mixed column name or array($column, $alias) or object * @param ... * @return Database_Query_Builder_Select */ public static function select($args = null) { return \Database_Connection::instance()->select(func_get_args()); } /** * Create a new [Database_Query_Builder_Select] from an array of columns. * * // SELECT id, username * $query = DB::select_array(array('id', 'username')); * * @param array columns to select * @return Database_Query_Builder_Select */ public static function select_array(array $columns = null) { return \Database_Connection::instance()->select($columns); } /** * Create a new [Database_Query_Builder_Insert]. * * // INSERT INTO users (id, username) * $query = DB::insert('users', array('id', 'username')); * * @param string table to insert into * @param array list of column names or array($column, $alias) or object * @return Database_Query_Builder_Insert */ public static function insert($table = null, array $columns = null) { return \Database_Connection::instance()->insert($table, $columns); } /** * Create a new [Database_Query_Builder_Update]. * * // UPDATE users * $query = DB::update('users'); * * @param string table to update * @return Database_Query_Builder_Update */ public static function update($table = null) { return \Database_Connection::instance()->update($table); } /** * Create a new [Database_Query_Builder_Delete]. * * // DELETE FROM users * $query = DB::delete('users'); * * @param string table to delete from * @return Database_Query_Builder_Delete */ public static function delete($table = null) { return \Database_Connection::instance()->delete($table); } /** * Create a new [Database_Expression] which is not escaped. An expression * is the only way to use SQL functions within query builders. * * $expression = DB::expr('COUNT(users.id)'); * * @param string $string expression * @return Database_Expression */ public static function expr($string) { return new \Database_Expression($string); } /** * Create a new [Database_Expression] containing a quoted identifier. An expression * is the only way to use SQL functions within query builders. * * $expression = DB::identifier('users.id'); // returns `users`.`id` for MySQL * * @param string $string the string to quote * @param string $db the database connection to use * @return Database_Expression */ public static function identifier($string, $db = null) { return new \Database_Expression(static::quote_identifier($string, $db)); } /** * Quote a value for an SQL query. * * @param string $string the string to quote * @param string $db the database connection to use * @return string the quoted value */ public static function quote($string, $db = null) { if (is_array($string)) { foreach ($string as $k => $s) { $string[$k] = static::quote($s, $db); } return $string; } return \Database_Connection::instance($db)->quote($string); } /** * Quotes an identifier so it is ready to use in a query. * * @param string $string the string to quote * @param string $db the database connection to use * @return string the quoted identifier */ public static function quote_identifier($string, $db = null) { if (is_array($string)) { foreach ($string as $k => $s) { $string[$k] = static::quote_identifier($s, $db); } return $string; } return \Database_Connection::instance($db)->quote_identifier($string); } /** * Quote a database table name and adds the table prefix if needed. * * @param string $string the string to quote * @param string $db the database connection to use * @return string the quoted identifier */ public static function quote_table($string, $db = null) { if (is_array($string)) { foreach ($string as $k => $s) { $string[$k] = static::quote_table($s, $db); } return $string; } return \Database_Connection::instance($db)->quote_table($string); } /** * Escapes a string to be ready for use in a sql query * * @param string $string the string to escape * @param string $db the database connection to use * @return string the escaped string */ public static function escape($string, $db = null) { return \Database_Connection::instance($db)->escape($string); } /** * If a table name is given it will return the table name with the configured * prefix. If not, then just the prefix is returned * * @param string $table the table name to prefix * @param string $db the database connection to use * @return string the prefixed table name or the prefix */ public static function table_prefix($table = null, $db = null) { return \Database_Connection::instance($db)->table_prefix($table); } /** * Lists all of the columns in a table. Optionally, a LIKE string can be * used to search for specific fields. * * // Get all columns from the "users" table * $columns = DB::list_columns('users'); * * // Get all name-related columns * $columns = DB::list_columns('users', '%name%'); * * @param string table to get columns from * @param string column to search for * @param string the database connection to use * @return array */ public static function list_columns($table = null, $like = null, $db = null) { return \Database_Connection::instance($db)->list_columns($table, $like); } /** * If a table name is given it will return the table name with the configured * prefix. If not, then just the prefix is returned * * @param string $table the table name to prefix * @param string $db the database connection to use * @return string the prefixed table name or the prefix */ public static function list_tables($like = null, $db = null) { return \Database_Connection::instance($db)->list_tables($like); } /** * Returns a normalized array describing the SQL data type * * DB::datatype('char'); * * @param string SQL data type * @param string db connection * @return array */ public static function datatype($type, $db = null) { return \Database_Connection::instance($db)->datatype($type); } /** * Count the number of records in a table. * * // Get the total number of records in the "users" table * $count = DB::count_records('users'); * * @param mixed table name string or array(query, alias) * @param string db connection * @return integer */ public static function count_records($table, $db = null) { return \Database_Connection::instance($db)->count_records($table); } /** * Count the number of records in the last query, without LIMIT or OFFSET applied. * * // Get the total number of records that match the last query * $count = $db->count_last_query(); * * @param string db connection * @return integer */ public static function count_last_query($db = null) { return \Database_Connection::instance($db)->count_last_query(); } /** * Set the connection character set. This is called automatically by [static::connect]. * * DB::set_charset('utf8'); * * @throws Database_Exception * @param string character set name * @param string db connection * @return void */ public static function set_charset($charset, $db = null) { \Database_Connection::instance($db)->set_charset($charset); } /** * Checks whether a connection is in transaction. * * DB::in_transaction(); * * @param string db connection * @return bool */ public static function in_transaction($db = null) { return \Database_Connection::instance($db)->in_transaction(); } /** * Begins a transaction on instance * * DB::start_transaction(); * * @param string db connection * @return bool */ public static function start_transaction($db = null) { return \Database_Connection::instance($db)->start_transaction(); } /** * Commits all pending transactional queries * * DB::commit_transaction(); * * @param string db connection * @return bool */ public static function commit_transaction($db = null) { return \Database_Connection::instance($db)->commit_transaction(); } /** * Rollsback pending transactional queries * Rollback to the current level uses SAVEPOINT, * it does not work if current RDBMS does not support them. * In this case system rollsback all queries and closes the transaction * * DB::rollback_transaction(); * * @param string $db connection * @param bool $rollback_all: * true - rollback everything and close transaction; * false - rollback only current level * @return bool */ public static function rollback_transaction($db = null, $rollback_all = true) { return \Database_Connection::instance($db)->rollback_transaction($rollback_all); } }