当前位置:首页 > PHP教程 > php应用 > 列表

PHP以mysqli方式连接类完整代码实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-03-21 13:22:40 浏览: 评论:0 

这篇文章主要介绍了PHP以mysqli方式连接类完整代码实例,对于学习和了解mysqli都有很大的帮助,需要的朋友可以参考下

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

  1. <?php 
  2. #================================================================================================== 
  3. # Filename: /db/db_mysqli.php 
  4. # Note : 连接数据库类,MySQLi版 
  5. #================================================================================================== 
  6. #[类库sql] 
  7. class db_mysqli 
  8.  var $query_count = 0; 
  9.  var $host
  10.  var $user
  11.  var $pass
  12.  var $data
  13.  var $conn
  14.  var $result
  15.  var $prefix = "qinggan_"
  16.  //返回结果集类型,默认是数字+字符 
  17.  var $rs_type = MYSQLI_ASSOC; 
  18.  var $query_times = 0;#[查询时间] 
  19.  var $conn_times = 0;#[连接数据库时间] 
  20.  var $unbuffered = false; 
  21.  //定义查询列表 
  22.  var $querylist
  23.  var $debug = false; 
  24.  #[构造函数] 
  25.  function __construct($config=array()) 
  26.  { 
  27.  $this->host = $config['host'] ? $config['host'] : 'localhost'
  28.  $this->port = $config['port'] ? $config['port'] : '3306'
  29.  $this->user = $config['user'] ? $config['user'] : 'root'
  30.  $this->pass = $config['pass'] ? $config['pass'] : ''
  31.  $this->data = $config['data'] ? $config['data'] : ''
  32.  $this->debug = $config["debug"] ? $config["debug"] : false; 
  33.  $this->prefix = $config['prefix'] ? $config['prefix'] : 'qinggan_'
  34.  if($this->data) 
  35.  { 
  36.   $ifconnect = $this->connect($this->data); 
  37.   if(!$ifconnect
  38.   { 
  39.   $this->conn = false; 
  40.   return false; 
  41.   } 
  42.  } 
  43.  return true; 
  44.  } 
  45.  #[兼容PHP4] 
  46.  function db_mysqli($config=array()) 
  47.  { 
  48.  return $this->__construct($config); 
  49.  } 
  50.  #[连接数据库] 
  51.  function connect($database=""
  52.  { 
  53.  $start_time = $this->time_used(); 
  54.  if(!$this->port) $this->port = "3306"
  55.  $this->conn = @mysqli_connect($this->host,$this->user,$this->pass,"",$this->port) or false; 
  56.  if(!$this->conn) 
  57.  { 
  58.   return false; 
  59.  } 
  60.  $version = $this->get_version(); 
  61.  if($version>"4.1"
  62.  { 
  63.   mysqli_query($this->conn,"SET NAMES 'utf8'"); 
  64.   if($version>"5.0.1"
  65.   { 
  66.   mysqli_query($this->conn,"SET sql_mode=''"); 
  67.   } 
  68.  } 
  69.  $end_time = $this->time_used(); 
  70.  $this->conn_times += round($end_time - $start_time,5);#[连接数据库的时间] 
  71.  $ifok = $this->select_db($database); 
  72.  return $ifok ? true : false; 
  73.  } 
  74.  function select_db($data=""
  75.  { 
  76.  $database = $data ? $data : $this->data; 
  77.  if(!$database
  78.  { 
  79.   return false; 
  80.  } 
  81.  $this->data = $database
  82.  $start_time = $this->time_used(); 
  83.  $ifok = mysqli_select_db($this->conn,$database); 
  84.  if(!$ifok
  85.  { 
  86.   return false; 
  87.  } 
  88.  $end_time = $this->time_used(); 
  89.  $this->conn_times += round($end_time - $start_time,5);#[连接数据库的时间] 
  90.  return true; 
  91.  } 
  92.  #[关闭数据库连接,当您使用持续连接时该功能失效] 
  93.  function close() 
  94.  { 
  95.  if(is_resource($this->conn)) 
  96.  { 
  97.   return mysqli_close($this->conn); 
  98.  } 
  99.  else 
  100.  { 
  101.   return true; 
  102.  } 
  103.  } 
  104.  function __destruct() 
  105.  { 
  106.  return $this->close(); 
  107.  } 
  108.  function set($name,$value
  109.  { 
  110.  if($name == "rs_type"
  111.  { 
  112.   $value = strtolower($value) == "num" ? MYSQLI_NUM : MYSQLI_ASSOC; 
  113.  } 
  114.  $this->$name = $value
  115.  } 
  116.  function query($sql
  117.  { 
  118.  if(!is_resource($this->conn)) 
  119.  { 
  120.   $this->connect(); 
  121.  } 
  122.  else 
  123.  { 
  124.   if(!mysql_ping($this->conn)) 
  125.   { 
  126.    $this->close(); 
  127.    $this->connect(); 
  128.   } 
  129.  } 
  130.  if($this->debug) 
  131.  { 
  132.   $sqlkey = md5($sql); 
  133.   if($this->querylist) 
  134.   { 
  135.   $qlist = array_keys($this->querylist); 
  136.   if(in_array($sqlkey,$qlist)) 
  137.   { 
  138.    $count = $this->querylist[$sqlkey]["count"] + 1; 
  139.    $this->querylist[$sqlkey] = array("sql"=>$sql,"count"=>$count); 
  140.   }else
  141.    $this->querylist[$sqlkey] = array("sql"=>$sql,"count"=>1); 
  142.   } 
  143.   } 
  144.   else
  145.   $this->querylist[$sqlkey] = array("sql"=>$sql,"count"=>1); 
  146.   } 
  147.  } 
  148.  $start_time = $this->time_used(); 
  149.  $func = $this->unbuffered && function_exists("mysqli_multi_query") ? "mysqli_multi_query" : "mysqli_query"
  150.  $this->result = @$func($this->conn,$sql); 
  151.  $this->query_count++; 
  152.  $end_time = $this->time_used(); 
  153.  $this->query_times += round($end_time - $start_time,5);#[查询时间] 
  154.  if(!$this->result) 
  155.  { 
  156.   return false; 
  157.  } 
  158.  return $this->result; 
  159.  } 
  160.  function get_all($sql="",$primary=""
  161.  { 
  162.  $result = $sql ? $this->query($sql) : $this->result; 
  163.  if(!$result
  164.  { 
  165.   return false; 
  166.  } 
  167.  $start_time = $this->time_used(); 
  168.  $rs = array(); 
  169.  $is_rs = false; 
  170.  while($rows = mysqli_fetch_array($result,$this->rs_type)) 
  171.  { 
  172.   if($primary && $rows[$primary]) 
  173.   { 
  174.   $rs[$rows[$primary]] = $rows
  175.   } 
  176.   else 
  177.   { 
  178.   $rs[] = $rows
  179.   } 
  180.   $is_rs = true; 
  181.  } 
  182.  $end_time = $this->time_used(); 
  183.  $this->query_times += round($end_time - $start_time,5);#[查询时间] 
  184.  return ($is_rs ? $rs : false); 
  185.  } 
  186.  function get_one($sql=""
  187.  { 
  188.  $start_time = $this->time_used(); 
  189.  $result = $sql ? $this->query($sql) : $this->result; 
  190.  if(!$result
  191.  { 
  192.   return false; 
  193.  } 
  194.  $rows = mysqli_fetch_array($result,$this->rs_type); 
  195.  $end_time = $this->time_used(); 
  196.  $this->query_times += round($end_time - $start_time,5);#[查询时间] 
  197.  return $rows
  198.  } 
  199.  function insert_id($sql=""
  200.  { 
  201.  if($sql
  202.  { 
  203.   $rs = $this->get_one($sql); 
  204.   return $rs
  205.  } 
  206.  else 
  207.  { 
  208.   return mysqli_insert_id($this->conn); 
  209.  } 
  210.  } 
  211.  function insert($sql
  212.  { 
  213.  $this->result = $this->query($sql); 
  214.  $id = $this->insert_id(); 
  215.  return $id
  216.  } 
  217.  function all_array($table,$condition="",$orderby=""
  218.  { 
  219.  if(!$table
  220.  { 
  221.   return false; 
  222.  } 
  223.  $table = $this->prefix.$table
  224.  $sql = "SELECT * FROM ".$table
  225.  if($condition && is_array($condition) && count($condition)>0) 
  226.  { 
  227.   $sql_fields = array(); 
  228.   foreach($condition AS $key=>$value
  229.   { 
  230.   $sql_fields[] = "`".$key."`='".$value."' "
  231.   } 
  232.   $sql .= " WHERE ".implode(" AND ",$sql_fields); 
  233.  } 
  234.  if($orderby
  235.  { 
  236.   $sql .= " ORDER BY ".$orderby
  237.  } 
  238.  $rslist = $this->get_all($sql); 
  239.  return $rslist
  240.  } 
  241.  function one_array($table,$condition=""
  242.  { 
  243.  if(!$table
  244.  { 
  245.   return false; 
  246.  } 
  247.  $table = $this->prefix.$table
  248.  $sql = "SELECT * FROM ".$table
  249.  if($condition && is_array($condition) && count($condition)>0) 
  250.  { 
  251.   $sql_fields = array(); 
  252.   foreach($condition AS $key=>$value
  253.   { 
  254.   $sql_fields[] = "`".$key."`='".$value."' "
  255.   } 
  256.   $sql .= " WHERE ".implode(" AND ",$sql_fields); 
  257.  } 
  258.  $rslist = $this->get_one($sql); 
  259.  return $rslist
  260.  } 
  261.  //将数组写入数据中 
  262.  function insert_array($data,$table,$insert_type="insert"
  263.  { 
  264.  if(!$table || !is_array($data) || !$data
  265.  { 
  266.   return false; 
  267.  } 
  268.  $table = $this->prefix.$table;//自动增加表前缀 
  269.  if($insert_type == "insert"
  270.  { 
  271.   $sql = "INSERT INTO ".$table
  272.  } 
  273.  else 
  274.  { 
  275.   $sql = "REPLACE INTO ".$table
  276.  } 
  277.  $sql_fields = array(); 
  278.  $sql_val = array(); 
  279.  foreach($data AS $key=>$value
  280.  { 
  281.   $sql_fields[] = "`".$key."`"
  282.   $sql_val[] = "'".$value."'"
  283.  } 
  284.  $sql.= "(".(implode(",",$sql_fields)).") VALUES(".(implode(",",$sql_val)).")"
  285.  return $this->insert($sql); 
  286.  } 
  287.  //更新数据 
  288.  function update_array($data,$table,$condition
  289.  { 
  290.  if(!$data || !$table || !$condition || !is_array($data) || !is_array($condition)) 
  291.  { 
  292.   return false; 
  293.  } 
  294.  $table = $this->prefix.$table;//自动增加表前缀 
  295.  $sql = "UPDATE ".$table." SET "
  296.  $sql_fields = array(); 
  297.  foreach($data AS $key=>$value
  298.  { 
  299.   $sql_fields[] = "`".$key."`='".$value."'"
  300.  } 
  301.  $sql.= implode(",",$sql_fields); 
  302.  $sql_fields = array(); 
  303.  foreach($condition AS $key=>$value
  304.  { 
  305.   $sql_fields[] = "`".$key."`='".$value."' "
  306.  } 
  307.  $sql .= " WHERE ".implode(" AND ",$sql_fields); 
  308.  return $this->query($sql); 
  309.  } 
  310.  function count($sql=""
  311.  { 
  312.  if($sql
  313.  { 
  314.   $this->rs_type = MYSQLI_NUM; 
  315.   $this->query($sql); 
  316.   $rs = $this->get_one(); 
  317.   $this->rs_type = MYSQLI_ASSOC; 
  318.   return $rs[0]; 
  319.  } 
  320.  else 
  321.  { 
  322.   return mysqli_num_rows($this->result); 
  323.  } 
  324.  } 
  325.  function num_fields($sql=""
  326.  { 
  327.  if($sql
  328.  { 
  329.   $this->query($sql); 
  330.  } 
  331.  return mysqli_num_fields($this->result); 
  332.  } 
  333.  function list_fields($table
  334.  { 
  335.  $rs = $this->get_all("SHOW COLUMNS FROM ".$table); 
  336.  if(!$rs
  337.  { 
  338.   return false; 
  339.  } 
  340.  foreach($rs AS $key=>$value
  341.  { 
  342.   $rslist[] = $value["Field"]; 
  343.  } 
  344.  return $rslist
  345.  } 
  346.  #[显示表名] 
  347.  function list_tables() 
  348.  { 
  349.  $rs = $this->get_all("SHOW TABLES"); 
  350.  return $rs
  351.  } 
  352.  function table_name($table_list,$i
  353.  { 
  354.  return $table_list[$i]; 
  355.  } 
  356.  function escape_string($char
  357.  { 
  358.  if(!$char
  359.  { 
  360.   return false; 
  361.  } 
  362.  return mysqli_escape_string($this->conn,$char); 
  363.  } 
  364.  function get_version() 
  365.  { 
  366.  return mysqli_get_server_info($this->conn); 
  367.  } 
  368.  function time_used() 
  369.  { 
  370.  $time = explode(" ",microtime()); 
  371.  $used_time = $time[0] + $time[1]; 
  372.  return $used_time
  373.  } 
  374.  //Mysql的查询时间 
  375.  function conn_times() 
  376.  { 
  377.  return $this->conn_times + $this->query_times; 
  378.  } 
  379.  //MySQL查询资料 
  380.  function conn_count() 
  381.  { 
  382.  return $this->query_count; 
  383.  } 
  384.  # 高效SQL生成查询,仅适合单表查询 
  385.  function phpok_one($tbl,$condition="",$fields="*"
  386.  { 
  387.  $sql = "SELECT ".$fields." FROM ".$this->db->prefix.$tbl
  388.  if($condition
  389.  { 
  390.   $sql .= " WHERE ".$condition
  391.  } 
  392.  return $this->get_one($sql); 
  393.  } 
  394.  function debug() 
  395.  { 
  396.  if(!$this->querylist || !is_array($this->querylist) || count($this->querylist) < 1) 
  397.  { 
  398.   return false; 
  399.  } 
  400.  $html = '<table cellpadding="0" cellspacing="0" width="100%" bgcolor="#CECECE"><tr><td>'
  401.  $html.= '<table cellpadding="1" cellspacing="1" width="100%">'
  402.  $html.= '<tr><th bgcolor="#EFEFEF" height="30px">SQL</th><th bgcolor="#EFEFEF" width="80px">查询</th></tr>'
  403.  foreach($this->querylist AS $key=>$value
  404.  { 
  405.   $html .= '<tr><td bgcolor="#FFFFFF"><div style="padding:3px;color:#6E6E6E;">'.$value['sql'].'</div></td>'
  406.   $html .= '<td align="center" bgcolor="#FFFFFF"><div style="padding:3px;color:#000000;">'.$value["count"].'</div></td></tr>'
  407.  } 
  408.  $html.= "</table>"
  409.  $html.= "</td></tr></table>"
  410.  return $html
  411.  } 
  412.  function conn_status() 
  413.  { 
  414.  if(!$this->conn) return false; 
  415.  return true; 
  416.  } 
  417. ?> 

Tags: PHP连接mysqli

分享到: