php mysql 连接 类_PHP mysqli方式连接类

分享一个PHP以mysqli方式连接类完整代码实例,有关mysqli用法实例。

一个在PHP中以mysqli方式连接数据库的一个数据库类实例,该数据库类是从一个PHP的CMS中整理出来的,可实现PHP连接数据库类,MySQLi版,兼容PHP4,对于有针对性需要的朋友可根据此代码进行优化和修改。

#==================================================================================================

# Filename: /db/db_mysqli.php

# Note : 连接数据库类,MySQLi版

#==================================================================================================

#[类库sql]

class db_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;

return false;

}

}

return true;

}

#[兼容PHP4]

function db_mysqli($config=array())

{

return $this->__construct($config);

}

#[连接数据库]

function connect($database="")

{

$start_time = $this->time_used();

if(!$this->port) $this->port = "3306";

$this->conn = @mysqli_connect($this->host,$this->user,$this->pass,"",$this->port) or false;

if(!$this->conn)

{

return false;

}

$version = $this->get_version();

if($version>"4.1")

{

mysqli_query($this->conn,"SET NAMES 'utf8'");

if($version>"5.0.1")

{

mysqli_query($this->conn,"SET sql_mode=''");

}

}

$end_time = $this->time_used();

$this->conn_times += round($end_time - $start_time,5);#[连接数据库的时间]

$ifok = $this->select_db($database);

return $ifok ? true : false;

}

function select_db($data="")

{

$database = $data ? $data : $this->data;

if(!$database)

{

return false;

}

$this->data = $database;

$start_time = $this->time_used();

$ifok = mysqli_select_db($this->conn,$database);

if(!$ifok)

{

return false;

}

$end_time = $this->time_used();

$this->conn_times += round($end_time - $start_time,5);#[连接数据库的时间]

return true;

}

#[关闭数据库连接,当您使用持续连接时该功能失效]

function close()

{

if(is_resource($this->conn))

{

return mysqli_close($this->conn);

}

else

{

return true;

}

}

function __destruct()

{

return $this->close();

}

function set($name,$value)

{

if($name == "rs_type")

{

$value = strtolower($value) == "num" ? MYSQLI_NUM : MYSQLI_ASSOC;

}

$this->$name = $value;

}

function query($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)

{

return false;

}

return $this->result;

}

function get_all($sql="",$primary="")

{

$result = $sql ? $this->query($sql) : $this->result;

if(!$result)

{

return false;

}

$start_time = $this->time_used();

$rs = array();

$is_rs = false;

while($rows = mysqli_fetch_array($result,$this->rs_type))

{ (脚本学堂 www.jbxue.com)

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);

}

function get_one($sql="")

{

$start_time = $this->time_used();

$result = $sql ? $this->query($sql) : $this->result;

if(!$result)

{

return false;

}

$rows = mysqli_fetch_array($result,$this->rs_type);

$end_time = $this->time_used();

$this->query_times += round($end_time - $start_time,5);#[查询时间]

return $rows;

}

function insert_id($sql="")

{

if($sql)

{

$rs = $this->get_one($sql);

return $rs;

}

else

{

return mysqli_insert_id($this->conn);

}

}

function insert($sql)

{

$this->result = $this->query($sql);

$id = $this->insert_id();

return $id;

}

function all_array($table,$condition="",$orderby="")

{

if(!$table)

{

return false;

}

$table = $this->prefix.$table;

$sql = "SELECT * FROM ".$table;

if($condition && is_array($condition) && count($condition)>0)

{

$sql_fields = array();

foreach($condition AS $key=>$value)

{

$sql_fields[] = "`".$key."`='".$value."' ";

}

$sql .= " WHERE ".implode(" AND ",$sql_fields);

}

if($orderby)

{

$sql .= " ORDER BY ".$orderby;

}

$rslist = $this->get_all($sql);

return $rslist;

}

function one_array($table,$condition="")

{

if(!$table)

{

return false;

}

$table = $this->prefix.$table;

$sql = "SELECT * FROM ".$table;

if($condition && is_array($condition) && count($condition)>0)

{

$sql_fields = array();

foreach($condition AS $key=>$value)

{

$sql_fields[] = "`".$key."`='".$value."' ";

}

$sql .= " WHERE ".implode(" AND ",$sql_fields);

}

$rslist = $this->get_one($sql);

return $rslist;

}

//将数组写入数据中

function insert_array($data,$table,$insert_type="insert")

{

if(!$table || !is_array($data) || !$data)

{

return false;

}

$table = $this->prefix.$table;//自动增加表前缀

if($insert_type == "insert")

{

$sql = "INSERT INTO ".$table;

}

else

{

$sql = "REPLACE INTO ".$table;

}

$sql_fields = array();

$sql_val = array();

foreach($data AS $key=>$value)

{

$sql_fields[] = "`".$key."`";

$sql_val[] = "'".$value."'";

}

$sql.= "(".(implode(",",$sql_fields)).") VALUES(".(implode(",",$sql_val)).")";

return $this->insert($sql);

}

//更新数据

function update_array($data,$table,$condition)

{

if(!$data || !$table || !$condition || !is_array($data) || !is_array($condition))

{

return false;

}

$table = $this->prefix.$table;//自动增加表前缀

$sql = "UPDATE ".$table." SET ";

$sql_fields = array();

foreach($data AS $key=>$value)

{

$sql_fields[] = "`".$key."`='".$value."'";

}

$sql.= implode(",",$sql_fields);

$sql_fields = array();

foreach($condition AS $key=>$value)

{

$sql_fields[] = "`".$key."`='".$value."' ";

}

$sql .= " WHERE ".implode(" AND ",$sql_fields);

return $this->query($sql);

}

function count($sql="")

{

if($sql)

{

$this->rs_type = MYSQLI_NUM;

$this->query($sql);

$rs = $this->get_one();

$this->rs_type = MYSQLI_ASSOC;

return $rs[0];

}

else

{

return mysqli_num_rows($this->result);

}

}

function num_fields($sql="")

{

if($sql)

{

$this->query($sql);

}

return mysqli_num_fields($this->result);

}

function list_fields($table)

{

$rs = $this->get_all("SHOW COLUMNS FROM ".$table);

if(!$rs)

{

return false;

}

foreach($rs AS $key=>$value)

{

$rslist[] = $value["Field"];

}

return $rslist;

}

#[显示表名]

function list_tables()

{

$rs = $this->get_all("SHOW TABLES");

return $rs;

}

function table_name($table_list,$i)

{

return $table_list[$i];

}

function escape_string($char)

{

if(!$char)

{

return false;

}

return mysqli_escape_string($this->conn,$char);

}

function get_version()

{

return mysqli_get_server_info($this->conn);

}

function time_used()

{

$time = explode(" ",microtime());

$used_time = $time[0] + $time[1];

return $used_time;

}

//Mysql的查询时间

function conn_times()

{

return $this->conn_times + $this->query_times;

}

//MySQL查询资料

function conn_count()

{

return $this->query_count;

}

# 高效SQL生成查询,仅适合单表查询

function phpok_one($tbl,$condition="",$fields="*")

{

$sql = "SELECT ".$fields." FROM ".$this->db->prefix.$tbl;

if($condition)

{

$sql .= " WHERE ".$condition;

}

return $this->get_one($sql);

}

function debug()

{

if(!$this->querylist || !is_array($this->querylist) || count($this->querylist) < 1)

{

return false;

}

$html = '

';

$html.= '

$html.= '

SQL查询

foreach($this->querylist AS $key=>$value)

{

$html .= '

'.$value['sql'].'
';

$html .= '

'.$value["count"].'
';

}

$html.= "

";

$html.= "

";

return $html;

}

function conn_status()

{

if(!$this->conn) return false;

return true;

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值