load('db', null); /** * MySQL Database Abstraction Layer * * This framework is a function wrapper for MySQL functions so we can have * better error reporting and query reporting. * * @author Blue Static * @copyright Copyright ©2002 - [#]year[#], Blue Static * @version $Revision$ * @package ISSO * */ class DB_MySQL extends DB_Abstract { /** * Command mapping list * @var array * @access private */ var $commands = array( 'pconnect' => '$this->command_mysql_pconnect', 'connect' => '$this->command_mysql_connect', 'query' => '$this->command_mysql_query', 'error_num' => 'mysql_errno', 'error_str' => 'mysql_error', 'escape_string' => '$this->command_mysql_escape_string', 'escape_binary' => '$this->escape_binary', 'fetch_assoc' => 'mysql_fetch_assoc', 'fetch_row' => 'mysql_fetch_row', 'fetch_object' => 'mysql_fetch_object', 'free_result' => 'mysql_free_result', 'insert_id' => 'mysql_insert_id', 'num_rows' => 'mysql_num_rows', 'affected_rows' => 'mysql_affected_rows' ); // ################################################################### /** * Constructor */ function __construct(&$registry) { parent::__construct($registry); } // ################################################################### /** * (PHP 4) Constructor */ function DB_MySQL(&$registry) { $this->__construct($registry); } // ################################################################### /** * Wrapper: mysql_pconnect * * @access protected * * @param string Server name * @param string User name * @param string Password * @param string Database * * @return integer DB-Link */ function command_mysql_pconnect($server, $user, $password, $database) { $link = mysql_pconnect($server, $user, $password); $this->select_db($database, $link); return $link; } // ################################################################### /** * Wrapper: mysql_connect * * @access protected * * @param string Server name * @param string User name * @param string Password * @param string Database * * @return integer DB-Link */ function command_mysql_connect($server, $user, $password, $database) { $link = mysql_connect($server, $user, $password, true); $this->select_db($database, $link); return $link; } // ################################################################### /** * Wrapper: mysql_select_db * * @access protected * * @param string Database name * @param integer DB-Link */ function select_db($database, $link) { if (!mysql_select_db($database, $link)) { $this->error('Cannot use the database \'' . $database . '\''); } } // ################################################################### /** * Wrapper: mysql_query * * @access protected * * @param integer DB-Link * @param string Query string * * @return integer Result */ function command_mysql_query($link, $string) { return mysql_query($string, $link); } // ################################################################### /** * Escapes a binary string for insertion into the database * * @access public * * @param string Unescaped data * * @return string Escaped binary data */ function escape_binary($binary) { return mysql_escape_string($binary); } // ################################################################### /** * Wrapper: mysql(_real)_escape_string * * @access protected * * @param integer DB-Link * @param string Unescaped text * * @return string Escaped text */ function command_mysql_escape_string($link, $string) { if (function_exists('mysql_real_escape_string')) { return @mysql_real_escape_string($string, $link); } else { return @mysql_escape_string($string); } } // ################################################################### /** * Not supported: unescape binary string * * @access protected * * @param string Escaped data * * @return string Same data */ function command_unescape_binary($string) { return $string; } // ################################################################### /** * Starts a database transaction * * @access public */ function transaction_start() { $this->query("BEGIN WORK"); } // ################################################################### /** * Saves current transaction steps as a savepoint * * @access public * * @param string Named savepoint */ function transaction_savepoint($name) { $this->query("SAVEPOINT $name"); } // ################################################################### /** * Reverts a transaction back to a given savepoint * * @access public * * @param string Named savepoint */ function transaction_rollback($name = null) { $this->query("ROLLBACK" . ($name != null ? " TO SAVEPOINT $name" : "")); } // ################################################################### /** * Commits a database transaction * * @access public */ function transaction_commit() { $this->query("COMMIT"); } } /*=====================================================================*\ || ################################################################### || # $HeadURL$ || # $Id$ || ################################################################### \*=====================================================================*/ ?>