<?php
/***
*
*@package binzcms
*@version $id:SqlClass.php, v 1.0
*@author 斌子
*@Fri Nov 14 01:29:42 CST 2008
*@copyright (c) 2009-2010 binzcms
*
*/
if(!defined("BINZCMS")) {
	die("hacking");
}
/**
 *
 * SqlClass
 * 数据库操作类
 * 
 */
class SqlClass {
	
	private $data_name;			//数据库名称
	private $data_user;			//数据库用户名
	private $data_passwd;		//数据库密码
	private $data_prefix;		//数据表前缀
	private $data_url;			//数据库地址
	private $db_connect;		//数据库连接
	
	/**
	 * __construct
	 *
	 * 构造函数
	 * @access  public（权限）
	 * @param   string		$data_name		数据库名称
	 * @param   string		$data_user		数据库用户名
	 * @param   string		$data_passwd	数据库密码
	 * @param   string		$data_prefix	数据表前缀
	 * @param   string 		$data_url		数据库连接地址
	 * @param   string 		$connect_type	链接方式
	 * @param   string		$data_port		数据库连接端口
	 * 
	 */
	public function __construct ($data_name='',$data_user='',$data_passwd='',$data_prefix='',$data_url='',$connect_type=false,$data_port='') {
		
		$this->data_name	= $data_name;
		$this->data_user	= $data_user;
		$this->data_passwd	= $data_passwd;
		$this->data_prefix	= $data_prefix;
		$this->data_url		= $data_url.($data_port == '' ? '' : ':'.$data_port);
		
		$this->db_connect	= $connect_type ? 
							  @mysql_pconnect($this->data_url,$this->data_user,$this->data_passwd) :
							  @mysql_connect($this->data_url,$this->data_user,$this->data_passwd);
		
		if(!empty($this->data_name) and $this->db_connect) {
			@mysql_query("SET NAMES 'utf8'",$this->db_connect);
			if($this->sql_version() > '5.0.1') {
				mysql_query("SET sql_mode=''",$this->db_connect);
			}
			if(!@mysql_select_db($this->data_name,$this->db_connect)) {
				return $this->out_mysql_error();
			}

		}
	}
	/**
	 * sql_fecth_array
	 *
	 * 数组形式返回查询结果
	 * @access  public（权限）
	 * @param   string	$result		sql执行
	 * @return  array
	 */
	public function sql_fetch_array($result) {
		return @mysql_fetch_array($result);
	}
	/**
	 * sql_fetch_assoc
	 *
	 * 从结果集中取得一行作为关联数组
	 * @access  public（权限）
	 * @param   string	$result		sql执行
	 * @return  array
	 */
	public function sql_fetch_assoc($result) {
		return @mysql_fetch_assoc($result);
	}
	/**
	 * sql_one_fetch
	 *
	 * 返回一条查询记录
	 * @access  public（权限）
	 * @param   string	$sql		sql语句
	 * @return  array
	 */
	public function sql_one_fetch($sql) {
		$sql	= $sql." limit 0,1";
		return $this->sql_fetch_array($this->sql_query($sql));
	}
	/**
	 * last_insert_id
	 *
	 * 函数简介
	 * @access  public（权限）
	 * @return  int
	 */
	public function last_insert_id() {
		return @mysql_insert_id();
	}
	/**
	 * one_query
	 *
	 * 执行一句没有返回值的sql语句
	 * @access  public（权限）
	 * @param   string	$sql		sql语句
	 * @return  bool	
	 */
	public function one_query($sql) {
		return $this->sql_query($sql);
	}
	/**
	 * get_total_row
	 *
	 * 获得查询记录的总数
	 * @access  public（权限）
	 * @param   string	$sql		sql查询语句
	 * @return  int					查询总数
	 */
	public function get_total_row($sql) {
		return @mysql_num_rows($this->sql_query($sql));
	}
	/**
	 * sql_query
	 *
	 * 执行sql语句（类内部使用）
	 * @access  private（权限）
	 * @param   srting	$sql		sql语句
	 * @return  bool				false或是true
	 */
	public function sql_query($sql) {
		$sql	= $this->replace_sql($sql);
		return mysql_query($sql);
	}
	/**
	 * sql_version
	 *
	 * 得到mysql版本
	 * @access  public（权限）
	 * 
	 */
	public function sql_version() {
		return @mysql_get_server_info();
	}
	/**
	 * replace_sql
	 *
	 * 替换为正确的数据库字段前缀
	 * @access  private（权限）
	 * @param   string	$sql		sql语句
	 * @param 	string $prefix		需替换的前缀
	 * @return  string				mysql语句字符串
	 */
	private function replace_sql($sql,$prefix='#binz#') {
		$sql	= str_replace($prefix,$this->data_prefix,trim($sql));
		return 	str_replace("[,;]$",'',$sql);
	}
	/**
	 * out_mysql_error
	 *
	 * 抛出mysql错误
	 * @access  private（权限）
	 * @param   null
	 * @return  string	错误提示
	 */
	public function out_mysql_error() {
		return mysql_error();
	}
	/**
	 * __destruct
	 *
	 * 析构函数，关闭数据库连接
	 * @access  public（权限）
	 */
	public function __destruct() {
		@mysql_close($this->db_connect);
	}
}
?>