* @since Beta 2.0 **/ class db_mysql extends database { var $socket; // Database Socket @var string /** * Constructor; sets up variables and connection * * @param string $db_host Server * @param string $db_user User Name * @param string $db_pass Password * @param string $db_name Database Name * @param int $db_port Database Port * @param string $db_socket Database Socket * @author Jason Warner * @since Beta 2.0 * @return void **/ function db_mysql($db_host, $db_user, $db_pass, $db_name, $db_port = 3306, $db_socket = '') { parent::database($db_host, $db_user, $db_pass, $db_name, $db_port, $db_socket); $this->socket = $db_socket; $this->connection = @mysql_connect("$db_host:$db_port" . (!$this->socket ? '' : ":$db_socket"), $db_user, $db_pass, true); if (!@mysql_select_db($db_name, $this->connection)) { $this->connection = false; } } function close() { if( $this->connection ) @mysql_close( $this->connection ); } /** * Runs an EXPLAIN or similar on a query * * @param string $query Query to debug * @access protected * @author Jason Warner * @since Beta 2.0 * @return void **/ function get_debug_info($query) { $data = array(); if (substr(trim(strtoupper($query)), 0, 6) == 'SELECT') { $result = mysql_query("EXPLAIN $query", $this->connection) or error(PDNSADMIN_QUERY_ERROR, mysql_error($this->connection), $query, mysql_errno($this->connection)); $data = mysql_fetch_array($result, MYSQL_ASSOC); } return $data; } /** * Retrieves the insert ID of the last executed query * * @param string $table Table name - unused * @author Jason Warner * @since Beta 2.1 * @return int Insert ID **/ function insert_id($table) { return mysql_insert_id($this->connection); } /** * Executes a query * * @param string $query SQL query * @param string $args Data to pass into query as escaped strings * @author Jason Warner * @since Beta 2.0 * @return resource Executed query **/ function query($query) { $args = array(); if (is_array($query)) { $args = $query; // only use arg 1 } else { $args = func_get_args(); } $query = $this->_format_query($args); $this->querycount++; if (isset($this->get['debug'])) { $this->debug($query); } $result = mysql_query($query, $this->connection) or error(PDNSADMIN_QUERY_ERROR, mysql_error($this->connection), $query, mysql_errno($this->connection)); return $result; } /** * Fetches an executed query into an array * * @param resource $query Executed SQL query * @author Jason Warner * @since Beta 2.0 * @return array Fetched rows **/ function nqfetch($query) { return mysql_fetch_array($query, MYSQL_ASSOC); } /** * Gets the number of rows retrieved by a SELECT * * @param resource $query Executed SQL query * @author Jason Warner * @since Beta 2.0 * @return int Number of retrieved rows **/ function num_rows($query) { return mysql_num_rows($query); } /** * Gets the number of rows affected by the last executed UPDATE * * @author Jason Warner * @since Beta 2.1 * @return int Number of affected rows **/ function aff_rows() { return mysql_affected_rows($this->connection); } /** * Returns a escaped string * * @author Matthew Lawrence * @since 1.3.0 * @return string A string with the quotes and other charaters escaped * @param string $string The string to escape **/ function escape($string) { return mysql_real_escape_string($string, $this->connection); } function invalid($errmsg) { if (stristr($errmsg, 'mysql_fetch_array(): supplied argument is not a valid MySQL result resource')) return true; return false; } function error_last() { return mysql_error($this->connection); } function version() { return mysql_result(mysql_query('SELECT VERSION() as version'), 0, 0); } } ?>