PHP以mysqli方式连接类完整代码实例
本文所述的是一个在PHP中以mysqli方式连接数据库的一个数据库类实例,该数据库类是从一个PHP的CMS中整理出来的,可实现PHP连接数据库类,MySQLi版,兼容PHP4,对于有针对性需要的朋友可根据此代码进行优化和修改。
<?php #================================================================================================== #Filename:/db/db_mysqli.php #Note:连接数据库类,MySQLi版 #================================================================================================== #[类库sql] classdb_mysqli { var$query_count=0; var$host; var$user; var$pass; var$data; var$conn; var$result; var$prefix="qinggan_"; //返回结果集类型,默认是数字+字符 var$rs_type=MYSQLI_ASSOC; var$query_times=0;#[查询时间] var$conn_times=0;#[连接数据库时间] var$unbuffered=false; //定义查询列表 var$querylist; var$debug=false; #[构造函数] function__construct($config=array()) { $this->host=$config['host']?$config['host']:'localhost'; $this->port=$config['port']?$config['port']:'3306'; $this->user=$config['user']?$config['user']:'root'; $this->pass=$config['pass']?$config['pass']:''; $this->data=$config['data']?$config['data']:''; $this->debug=$config["debug"]?$config["debug"]:false; $this->prefix=$config['prefix']?$config['prefix']:'qinggan_'; if($this->data) { $ifconnect=$this->connect($this->data); if(!$ifconnect) { $this->conn=false; returnfalse; } } returntrue; } #[兼容PHP4] functiondb_mysqli($config=array()) { return$this->__construct($config); } #[连接数据库] functionconnect($database="") { $start_time=$this->time_used(); if(!$this->port)$this->port="3306"; $this->conn=@mysqli_connect($this->host,$this->user,$this->pass,"",$this->port)orfalse; if(!$this->conn) { returnfalse; } $version=$this->get_version(); if($version>"4.1") { mysqli_query($this->conn,"SETNAMES'utf8'"); if($version>"5.0.1") { mysqli_query($this->conn,"SETsql_mode=''"); } } $end_time=$this->time_used(); $this->conn_times+=round($end_time-$start_time,5);#[连接数据库的时间] $ifok=$this->select_db($database); return$ifok?true:false; } functionselect_db($data="") { $database=$data?$data:$this->data; if(!$database) { returnfalse; } $this->data=$database; $start_time=$this->time_used(); $ifok=mysqli_select_db($this->conn,$database); if(!$ifok) { returnfalse; } $end_time=$this->time_used(); $this->conn_times+=round($end_time-$start_time,5);#[连接数据库的时间] returntrue; } #[关闭数据库连接,当您使用持续连接时该功能失效] functionclose() { if(is_resource($this->conn)) { returnmysqli_close($this->conn); } else { returntrue; } } function__destruct() { return$this->close(); } functionset($name,$value) { if($name=="rs_type") { $value=strtolower($value)=="num"?MYSQLI_NUM:MYSQLI_ASSOC; } $this->$name=$value; } functionquery($sql) { if(!is_resource($this->conn)) { $this->connect(); } else { if(!mysql_ping($this->conn)) { $this->close(); $this->connect(); } } if($this->debug) { $sqlkey=md5($sql); if($this->querylist) { $qlist=array_keys($this->querylist); if(in_array($sqlkey,$qlist)) { $count=$this->querylist[$sqlkey]["count"]+1; $this->querylist[$sqlkey]=array("sql"=>$sql,"count"=>$count); }else{ $this->querylist[$sqlkey]=array("sql"=>$sql,"count"=>1); } } else{ $this->querylist[$sqlkey]=array("sql"=>$sql,"count"=>1); } } $start_time=$this->time_used(); $func=$this->unbuffered&&function_exists("mysqli_multi_query")?"mysqli_multi_query":"mysqli_query"; $this->result=@$func($this->conn,$sql); $this->query_count++; $end_time=$this->time_used(); $this->query_times+=round($end_time-$start_time,5);#[查询时间] if(!$this->result) { returnfalse; } return$this->result; } functionget_all($sql="",$primary="") { $result=$sql?$this->query($sql):$this->result; if(!$result) { returnfalse; } $start_time=$this->time_used(); $rs=array(); $is_rs=false; while($rows=mysqli_fetch_array($result,$this->rs_type)) { if($primary&&$rows[$primary]) { $rs[$rows[$primary]]=$rows; } else { $rs[]=$rows; } $is_rs=true; } $end_time=$this->time_used(); $this->query_times+=round($end_time-$start_time,5);#[查询时间] return($is_rs?$rs:false); } functionget_one($sql="") { $start_time=$this->time_used(); $result=$sql?$this->query($sql):$this->result; if(!$result) { returnfalse; } $rows=mysqli_fetch_array($result,$this->rs_type); $end_time=$this->time_used(); $this->query_times+=round($end_time-$start_time,5);#[查询时间] return$rows; } functioninsert_id($sql="") { if($sql) { $rs=$this->get_one($sql); return$rs; } else { returnmysqli_insert_id($this->conn); } } functioninsert($sql) { $this->result=$this->query($sql); $id=$this->insert_id(); return$id; } functionall_array($table,$condition="",$orderby="") { if(!$table) { returnfalse; } $table=$this->prefix.$table; $sql="SELECT*FROM".$table; if($condition&&is_array($condition)&&count($condition)>0) { $sql_fields=array(); foreach($conditionAS$key=>$value) { $sql_fields[]="`".$key."`='".$value."'"; } $sql.="WHERE".implode("AND",$sql_fields); } if($orderby) { $sql.="ORDERBY".$orderby; } $rslist=$this->get_all($sql); return$rslist; } functionone_array($table,$condition="") { if(!$table) { returnfalse; } $table=$this->prefix.$table; $sql="SELECT*FROM".$table; if($condition&&is_array($condition)&&count($condition)>0) { $sql_fields=array(); foreach($conditionAS$key=>$value) { $sql_fields[]="`".$key."`='".$value."'"; } $sql.="WHERE".implode("AND",$sql_fields); } $rslist=$this->get_one($sql); return$rslist; } //将数组写入数据中 functioninsert_array($data,$table,$insert_type="insert") { if(!$table||!is_array($data)||!$data) { returnfalse; } $table=$this->prefix.$table;//自动增加表前缀 if($insert_type=="insert") { $sql="INSERTINTO".$table; } else { $sql="REPLACEINTO".$table; } $sql_fields=array(); $sql_val=array(); foreach($dataAS$key=>$value) { $sql_fields[]="`".$key."`"; $sql_val[]="'".$value."'"; } $sql.="(".(implode(",",$sql_fields)).")VALUES(".(implode(",",$sql_val)).")"; return$this->insert($sql); } //更新数据 functionupdate_array($data,$table,$condition) { if(!$data||!$table||!$condition||!is_array($data)||!is_array($condition)) { returnfalse; } $table=$this->prefix.$table;//自动增加表前缀 $sql="UPDATE".$table."SET"; $sql_fields=array(); foreach($dataAS$key=>$value) { $sql_fields[]="`".$key."`='".$value."'"; } $sql.=implode(",",$sql_fields); $sql_fields=array(); foreach($conditionAS$key=>$value) { $sql_fields[]="`".$key."`='".$value."'"; } $sql.="WHERE".implode("AND",$sql_fields); return$this->query($sql); } functioncount($sql="") { if($sql) { $this->rs_type=MYSQLI_NUM; $this->query($sql); $rs=$this->get_one(); $this->rs_type=MYSQLI_ASSOC; return$rs[0]; } else { returnmysqli_num_rows($this->result); } } functionnum_fields($sql="") { if($sql) { $this->query($sql); } returnmysqli_num_fields($this->result); } functionlist_fields($table) { $rs=$this->get_all("SHOWCOLUMNSFROM".$table); if(!$rs) { returnfalse; } foreach($rsAS$key=>$value) { $rslist[]=$value["Field"]; } return$rslist; } #[显示表名] functionlist_tables() { $rs=$this->get_all("SHOWTABLES"); return$rs; } functiontable_name($table_list,$i) { return$table_list[$i]; } functionescape_string($char) { if(!$char) { returnfalse; } returnmysqli_escape_string($this->conn,$char); } functionget_version() { returnmysqli_get_server_info($this->conn); } functiontime_used() { $time=explode("",microtime()); $used_time=$time[0]+$time[1]; return$used_time; } //Mysql的查询时间 functionconn_times() { return$this->conn_times+$this->query_times; } //MySQL查询资料 functionconn_count() { return$this->query_count; } #高效SQL生成查询,仅适合单表查询 functionphpok_one($tbl,$condition="",$fields="*") { $sql="SELECT".$fields."FROM".$this->db->prefix.$tbl; if($condition) { $sql.="WHERE".$condition; } return$this->get_one($sql); } functiondebug() { if(!$this->querylist||!is_array($this->querylist)||count($this->querylist)<1) { returnfalse; } $html='<tablecellpadding="0"cellspacing="0"width="100%"bgcolor="#CECECE"><tr><td>'; $html.='<tablecellpadding="1"cellspacing="1"width="100%">'; $html.='<tr><thbgcolor="#EFEFEF"height="30px">SQL</th><thbgcolor="#EFEFEF"width="80px">查询</th></tr>'; foreach($this->querylistAS$key=>$value) { $html.='<tr><tdbgcolor="#FFFFFF"><divstyle="padding:3px;color:#6E6E6E;">'.$value['sql'].'</div></td>'; $html.='<tdalign="center"bgcolor="#FFFFFF"><divstyle="padding:3px;color:#000000;">'.$value["count"].'</div></td></tr>'; } $html.="</table>"; $html.="</td></tr></table>"; return$html; } functionconn_status() { if(!$this->conn)returnfalse; returntrue; } } ?>