Mysql的底层封装
程序员文章站
2022-05-08 19:50:01
...
class db_mysql { private $db; private $dbhost;//数据库主机名 private $dbuser;//数据库用户名 private $dbpw;//数据库密码 private $dbname;//数据库名字 private $pconnect;//0 =>不持久连接, 1=> 持久连接 private $charset;//数据库编码 var $query_num=0;//查询次数 public function __construct($dbhost,$dbuser,$dbpw,$dbname,$pconnect=0,$charset="utf8") { $this->dbhost=$dbhost; $this->dbuser=$dbuser; $this->dbpw=$dbpw; $this->dbname=$dbname; $this->pconnect=$pconnect; $this->charset=$charset; $this->connect();//初始化数据库链接 } //数据库链接 private function connect() { if (!function_exists('mysql_connect')||!function_exists('mysql_pconnect')){ $this->halt('服务器PHP不支持MySql数据库!'); } if(!empty($this->dbhost)|| !empty($this->dbuser)||$this->dbhost!=="" ||$this->dbuser!=="") { if($this->pconnect==1){ $this->db=@mysql_pconnect($this->dbhost,$this->dbuser,$this->dbpw,true); if(!$this->db){ $this->halt("数据库持久连接失败,可能是数据库用户名或密码错误!"); } } else { $this->db=@mysql_connect($this->dbhost,$this->dbuser,$this->dbpw); if(!$this->db){ $this->halt("数据库连接失败,可能是数据库用户名或密码错误!"); } } } if ($this->version() >'4.1'){ mysql_query("set names ".$this->charset,$this->db); } if(!empty($this->dbname)||$this->dbname!=""){ if(!mysql_select_db($this->dbname,$this->db)){ $this->halt("数据库选择失败,可能是数据库名错误!"); } } } //查询执行 function query($sql, $unbuffered = false) { $func = $unbuffered ? 'mysql_unbuffered_query' : 'mysql_query'; $query = @$func($sql); if(!$query){ $this->halt('Query 错误 '.$sql); } $this->query_num++; return $query; } //选择数据库 function select_db($dbname) { return mysql_select_db($dbname, $this->db); } //取单一数据(MYSQL_ASSOC,MYSQL_NUM,MYSQL_BOTH) function fetch($query, $result_type=MYSQL_ASSOC) { return mysql_fetch_array($query, $result_type); } //取结果集数据(MYSQL_ASSOC,MYSQL_NUM,MYSQL_BOTH) function fetch_array($query, $result_type=MYSQL_BOTH) { return mysql_fetch_array($query, $result_type); } function fetch_row($query) { return mysql_fetch_row($query); } function fetch_field($query) { return mysql_fetch_field($query); } function fetch_assoc($query) { return mysql_fetch_assoc($squery); } //返回根据所取得的行生成的对象* function fetch_object($result) { return mysql_fetch_object($result); } //返回上次UPDATE更改的行数,上次DELETE删除的行数,或上次INSERT语句插入的行数。 function affected_rows() { return mysql_affected_rows($this->db); } //返回结果集 function result($query, $row = 0, $field = 0) { return @mysql_result($query, $row, $field); } //释放结果集 function free_result($query) { return mysql_free_result($query); } //返回行数 function num_rows($query) { return mysql_num_rows($query); } //获得结果集中字段的数目 function num_fields($query) { return mysql_num_fields($query); } //返回插入的ID值 function insert_id() { return ($id = mysql_insert_id($this->db)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0); } //错误信息 function error() { return (($this->db) ? mysql_error($this->db) : mysql_error()); } //错误代码 function errno() { return intval(($this->db) ? mysql_errno($this->db) : mysql_errno()); } //获取数据库版本 function version() { if(empty($this->version)) { $this->version = mysql_get_server_info($this->db); } return $this->version; } //列出 MySQL 数据库中的表 function get_table_names($dbname='') { if(empty($dbname)) { $db_name=$this->dbname; } else { $db_name=$dbname; } $result = mysql_list_tables($db_name); $num_tables = @mysql_numrows($result); for ($i = 0; $i < $num_tables; $i++) { $tables[] = mysql_tablename($result, $i); } mysql_free_result($result); return $tables; } function data_seek($result, $offset) { return mysql_data_seek($result, $offset); } // 对特殊字符进行过滤value 值 function escape_string($str){ return mysql_real_escape_string($str,$this->db) or mysql_real_escape_string($str); } //关闭数据库 function close() { return mysql_close($this->db); } // function get_client_info() { return mysql_get_client_info($this->db); } // function get_proto_info() { return mysql_get_proto_info($this->db); } // function get_host_info() { return mysql_get_host_info($this->db); } // function field_len($result, $i) { return mysql_field_len($result, $i); } // function field_name($result, $i) { return mysql_field_name($result, $i); } // function field_flags($result, $i) { return mysql_field_flags($result, $i); } // function get_fields_meta($result) { $fields = array(); $num_fields = mysql_num_fields($result); for ($i = 0; $i < $num_fields; $i++) { $field = mysql_fetch_field($result, $i); $field->flags = mysql_field_flags($result, $i); $field->orgtable = mysql_field_table($result, $i); $field->orgname = mysql_field_name($result, $i); $fields[] = $field; } return $fields; } //错误提示 private function halt($msg='') { $s=''; $error = $this->error(); $errorno = $this->errno(); $s.=""; if($this->db){ $Version=$this->version(); $s.="".$Version." "; } $s.="".$msg." "; $s.="".$error." "; $s.="".$errorno." "; die($s); } }
上一篇: 关于Mysql事务性
下一篇: [转]解说SQL 优化_MySQL