亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

一款簡單實用的php操作mysql數據庫類

2024-05-04 23:28:42
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了一款簡單實用的php操作mysql數據庫類,不但包含了php針對mysql數據庫的常見操作之外,還有針對危險字符的過濾功能,非常具有實用價值,需要的朋友可以參考下
 
 

本文實例講述了一款簡單實用的php操作mysql數據庫類。分享給大家供大家參考。具體如下:

 

復制代碼代碼如下:

/* 
本款數據庫連接類,他會自動加載sql防注入功能,過濾一些敏感的sql查詢關鍵詞,同時還可以增加判斷字段 show table status的性質與show table類 獲取數據庫所有表名等。*/ 
@ini_set('mysql.trace_mode','off'); 
class mysql 
{
 public $dblink; 
 public $pconnect; 
 private $search = array('/union(s*(/*.**/)?s*)+select/i', '/load_file(s*(/*.**/)?s*)+(/i', '/into(s*(/*.**/)?s*)+outfile/i'); 
 private $replace = array('union   select', 'load_file   (', 'into   outfile'); 
 private $rs; 
 
 function __construct($hostname,$username,$userpwd,$database,$pconnect=false,$charset='utf8') 
 { 
  define('allowed_htmltags', '<html><embed><title><meta><body><a><p><br><hr><h1><h2><h3><h4><h5><h6><font><u><i><b><strong><div><span><ol><ul><li><img><table><tr><td><map>');  
  $this->pconnect=$pconnect; 
  $this->dblink=$pconnect?mysql_pconnect($hostname,$username,$userpwd):mysql_connect($hostname,$username,$userpwd); 
  (!$this->dblink||!is_resource($this->dblink)) && fatal_error("connect to the database unsuccessfully!"); 
  @mysql_unbuffered_query("set names {$charset}"); 
  if($this->version()>'5.0.1') 
  { 
   @mysql_unbuffered_query("set sql_mode = ''"); 
  } 
  @mysql_select_db($database) or fatal_error("can not select table!"); 
  return $this->dblink; 
 } 
 
 function query($sql,$unbuffered=false) 
 { 
  //echo $sql.'<br>'; 
  $this->rs=$unbuffered?mysql_unbuffered_query($sql,$this->dblink):mysql_query($sql,$this->dblink); 
  //(!$this->rs||!is_resource($this->rs)) && fatal_error("execute the query unsuccessfully! error:".mysql_error()); 
  if(!$this->rs)fatal_error('在執行sql語句 '.$sql.' 時發生以下錯誤:'.mysql_error()); 
  return $this->rs; 
 } 
 
 function fetch_one($sql) 
 { 
  $this->rs=$this->query($sql); 
  return dircms_strips教程lashes($this->filter_pass(mysql_fetch_array($this->rs,mysql_assoc))); 
 } 
 
 function get_maxfield($filed='id',$table) // 獲取$table表中$filed字段的最大值 
 { 
  $r=$this->fetch_one("select {$table}.{$filed} from `{$table}` order by `{$table}`.`{$filed}` desc limit 0,1"); 
  return $r[$filed]; 
 } 
 
 function fetch_all($sql) 
 { 
  $this->rs=$this->query($sql); 
  $result=array(); 
  while($rows=mysql_fetch_array($this->rs,mysql_assoc)) 
  { 
   $result[]=$rows; 
  } 
   
  mysql_free_result($this->rs); 
  return dircms_stripslashes($this->filter_pass($result));  
 } 
 
 function fetch_all_withkey($sql,$key='id') 
 { 
  $this->rs=$this->query($sql); 
  $result=array(); 
  while($rows=mysql_fetch_array($this->rs,mysql_assoc)) 
  { 
   $result[$rows[$key]]=$rows; 
  } 
   
  mysql_free_result($this->rs); 
  return dircms_stripslashes($this->filter_pass($result));  
 } 
 
 function last_insert_id() 
 { 
  if(($insertid=mysql_insert_id($this->dblink))>0)return $insertid; 
  else //如果 auto_increment 的列的類型是 bigint,則 mysql_insert_id() 返回的值將不正確. 
  { 
   $result=$this->fetch_one('select last_insert_id() as insertid'); 
   return $result['insertid']; 
  } 
 } 
 
 function insert($tbname,$varray,$replace=false) 
 { 
  $varray=$this->escape($varray); 
  $tb_fields=$this->get_fields($tbname); // 升級一下,增加判斷字段是否存在 
   
  foreach($varray as $key => $value) 
  { 
   if(in_array($key,$tb_fields)) 
   { 
    $fileds[]='`'.$key.'`'; 
    $values[]=is_string($value)?'''.$value.''':$value; 
   } 
  } 
 
  if($fileds) 
  { 
   $fileds=implode(',',$fileds); 
   $fileds=str_replace(''','`',$fileds); 
   $values=implode(',',$values); 
   $sql=$replace?"replace into {$tbname}({$fileds}) values ({$values})":"insert into {$tbname}({$fileds}) values ({$values})"; 
   $this->query($sql,true); 
   return $this->last_insert_id(); 
  } 
  else return false; 
 } 
 
 function update($tbname, $array, $where = '') 
 { 
  $array=$this->escape($array); 
  if($where) 
  { 
   $tb_fields=$this->get_fields($tbname); // 增加判斷字段是否存在 
    
   $sql = ''; 
   foreach($array as $k=>$v) 
   { 
    if(in_array($k,$tb_fields)) 
    { 
     $k=str_replace(''','',$k); 
     $sql .= ", `$k`='$v'"; 
    } 
   } 
   $sql = substr($sql, 1); 
    
   if($sql)$sql = "update `$tbname` set $sql where $where"; 
   else return true; 
  } 
  else 
  { 
   $sql = "replace into `$tbname`(`".implode('`,`', array_keys($array))."`) values('".implode("','", $array)."')"; 
  } 
  return $this->query($sql,true); 
 } 
  
 function mysql_delete($tbname,$idarray,$filedname='id') 
 { 
  $idwhere=is_array($idarray)?implode(',',$idarray):intval($idarray); 
  $where=is_array($idarray)?"{$tbname}.{$filedname} in ({$idwhere})":" {$tbname}.{$filedname}={$idwhere}"; 
 
  return $this->query("delete from {$tbname} where {$where}",true); 
 } 
 
 function get_fields($table) 
 { 
  $fields=array(); 
  $result=$this->fetch_all("show columns from `{$table}`"); 
  foreach($result as $val) 
  { 
   $fields[]=$val['field']; 
  } 
  return $fields; 
 } 
 
 function get_table_status($database) 
 { 
  $status=array(); 
  $r=$this->fetch_all("show table status from `".$database."`"); /////// show table status的性質與show table類似,不過,可以提供每個表的大量信息。 
  foreach($r as $v) 
  { 
   $status[]=$v; 
  } 
  return $status; 
 } 
 
 function get_one_table_status($table) 
 { 
  return $this->fetch_one("show table status like '$table'"); 
 } 
 
 function create_fields($tbname,$fieldname,$size=0,$type='varchar') // 2010-5-14 修正一下 
 {   
  if($size) 
  { 
   $size=strtoupper($type)=='varchar'?$size:8; 
   $this->query("alter table `{$tbname}` add `$fieldname` {$type}( {$size} )  not null",true); 
  } 
  else $this->query("alter table `{$tbname}` add `$fieldname` mediumtext  not null",true); 
  return true; 
 } 
 
 function get_tables() //獲取所有表表名 
 { 
  $tables=array(); 
  $r=$this->fetch_all("show tables"); 
  foreach($r as $v) 
  { 
   foreach($v as $v_) 
   { 
    $tables[]=$v_; 
   } 
  } 
  return $tables; 
 } 
 
 function create_model_table($tbname) //創建一個內容模型表(start:初始只有字段contentid int(20),用于內容表,/////////////////////// update:2010-5-20     默認加入`content` mediumtext not null,字段) 
 { 
  if(in_array($tbname,$this->get_tables())) return false;  ///////////////////// 當表名已經存在時,返回 false
  if($this->query("create table `{$tbname}` ( 
`contentid` mediumint(8) not null , 
`content` mediumtext not null, 
key ( `contentid` )  
) engine = myisam default charset=utf8",true))return true;   ////////////////////  成功則返回 true 
  return false; //////////////失敗返回 false 
 } 
 
 function create_table($tbname) //創建一個會員模型空表(初始只有字段userid int(20),用于會員表,2010-4-26) 
 { 
  if(in_array($tbname,$this->get_tables())) return false; 
  if($this->query("create table `{$tbname}` ( 
`userid` mediumint(8) not null , 
key ( `userid` )  
) engine = myisam default charset=utf8",true))return true; 
  return false; 
 } 
 
 function escape($str) // 過濾危險字符 
 { 
  if(!is_array($str)) return str_replace(array('n', 'r'), array(chr(10), chr(13)),mysql_real_escape_string(preg_replace($this->search,$this->replace, $str), $this->dblink)); 
  foreach($str as $key=>$val) $str[$key] = $this->escape($val); 
  return $str; 
 } 
 
 function filter_pass($string, $allowedtags = '', $disabledattributes = array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavaible', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragdrop', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterupdate', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmoveout', 'onmouseo教程ver', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload')) 
 { 
  if(is_array($string)) 
  { 
   foreach($string as $key => $val) $string[$key] = $this->filter_pass($val, allowed_htmltags); 
  } 
  else 
  { 
   $string = preg_replace('/s('.implode('|', $disabledattributes).').*?([s>])/', '', preg_replace('/<(.*?)>/ie', "'<'.preg_replace(array('/網頁特效:[^"']*/i', '/(".implode('|', $disabledattributes).")[ ]*=[ ]*["'][^"']*["']/i', '/s+/'), array('', '', ' '), stripslashes('')) . '>'", strip_tags($string, $allowedtags))); 
  } 
  return $string; 
 } 
 
 function drop_table($tbname) 
 { 
  return $this->query("drop table if exists `{$tbname}`",true); 
 } 
 
 function version() 
 { 
  return mysql_get_server_info($this->dblink); 
 } 

 

希望本文所述對大家的PHP程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久高清视频免费| 国产一区二区三区丝袜| 国产精品成人久久久久| 国内精品一区二区三区| 亚洲欧美国产一本综合首页| 欧美大片欧美激情性色a∨久久| 国产精品96久久久久久又黄又硬| 亚洲一区二区福利| 26uuu另类亚洲欧美日本一| 亚洲国产精久久久久久久| 中文在线资源观看视频网站免费不卡| 国产精品大陆在线观看| 亚洲高清久久网| 91av视频在线观看| 亚洲跨种族黑人xxx| 午夜精品免费视频| 都市激情亚洲色图| 欧美激情中文字幕乱码免费| 国产亚洲人成网站在线观看| 丝袜亚洲欧美日韩综合| 最新69国产成人精品视频免费| 中文字幕视频一区二区在线有码| 亚洲第一视频网| 久久99亚洲精品| 欧美激情欧美狂野欧美精品| 亚洲激情 国产| 日韩av中文字幕在线免费观看| 91久久久久久国产精品| 成人天堂噜噜噜| 97成人精品视频在线观看| 色老头一区二区三区在线观看| 日韩欧美大尺度| 亚洲人高潮女人毛茸茸| 国产成人一区二区三区| 久久久精品国产一区二区| 97精品一区二区三区| 亚洲人成电影网站色www| 中文字幕国产精品久久| 性色av一区二区三区免费| 久久精品中文字幕| 欧美性一区二区三区| 日韩电影中文字幕在线| 亚洲网站视频福利| 97超级碰在线看视频免费在线看| 国产成人aa精品一区在线播放| 超碰精品一区二区三区乱码| 日韩精品免费视频| 亚洲第一视频网站| 久久精品在线视频| 久久人体大胆视频| 国产成人久久久精品一区| 2019中文字幕在线观看| 日韩美女免费观看| 日韩中文娱乐网| 亚洲一区二区久久| 国产精品日韩欧美综合| 国产精品www色诱视频| 国产91九色视频| 九九热最新视频//这里只有精品| 欧美激情在线有限公司| 国产精品毛片a∨一区二区三区|国| 亚洲欧洲一区二区三区久久| 黄色精品一区二区| 亚洲а∨天堂久久精品喷水| 亚洲精品久久久久久久久久久久| 欧美情侣性视频| 国自产精品手机在线观看视频| 日韩av手机在线看| 91国内揄拍国内精品对白| 69av在线视频| 久久久久久久一区二区| 精品成人乱色一区二区| 久久久视频精品| 中文字幕在线亚洲| 国产亚洲欧美日韩精品| 久久网福利资源网站| 国产美女扒开尿口久久久| 精品视频—区二区三区免费| 欧美日韩亚洲高清| 91精品国产自产在线| 欧美日韩国产一中文字不卡| 国产精品久久国产精品99gif| 久久免费成人精品视频| 欧美一区在线直播| 国产精品观看在线亚洲人成网| 日韩欧美视频一区二区三区| 国产精品青草久久久久福利99| 国产精品黄页免费高清在线观看| 欧美裸体xxxx极品少妇软件| 5566日本婷婷色中文字幕97| 国产午夜精品一区理论片飘花| 成人在线中文字幕| 精品久久久久久亚洲精品| 色天天综合狠狠色| 国产91色在线|| 欧美性猛交xxxx乱大交蜜桃| 国产精品久久激情| 国产亚洲精品久久久优势| 国产免费成人av| 久久久天堂国产精品女人| 欧美激情国产日韩精品一区18| 91沈先生在线观看| 成人免费观看网址| 亚洲第一区在线观看| 国产精品6699| 欧美日韩在线观看视频小说| 日韩中文理论片| 国产亚洲精品久久久久久牛牛| 欧美在线欧美在线| 亚洲男人的天堂在线播放| 欧美大片免费观看在线观看网站推荐| 久久久亚洲国产天美传媒修理工| 国产99久久精品一区二区| 日韩美女在线观看| 亚洲第一黄色网| 亚洲精品久久在线| 日韩欧美在线免费| 国产精品96久久久久久又黄又硬| 亚洲精品成人久久电影| 欧美人与性动交a欧美精品| 成人h视频在线| 国产精品人人做人人爽| 一本色道久久综合狠狠躁篇怎么玩| 91欧美激情另类亚洲| 久久免费视频在线观看| 夜夜嗨av色一区二区不卡| 欧美性猛交丰臀xxxxx网站| 91久久精品久久国产性色也91| 日韩精品久久久久久久玫瑰园| 久久亚洲精品小早川怜子66| 欧美在线视频播放| 欧美黑人性猛交| 日本欧美一级片| 欧美在线精品免播放器视频| 日韩日本欧美亚洲| 欧美在线一区二区视频| 精品视频在线播放免| 正在播放亚洲1区| 亚洲欧美一区二区三区情侣bbw| 在线免费看av不卡| 国产精品女人网站| 亚洲欧美国产一区二区三区| 97人人做人人爱| 国产日本欧美在线观看| 亚洲a中文字幕| 成人亲热视频网站| 国产精品免费一区| 亚洲男人的天堂在线播放| 欧美日韩成人免费| 欧美成人亚洲成人日韩成人| 亚洲精品中文字幕有码专区| 欧美专区中文字幕| 国产精品久久久久久久久粉嫩av| 日韩av在线网站| 精品亚洲一区二区三区四区五区| 久久久精品一区| 日韩精品中文字幕在线| 欧美亚洲成人免费| 亚洲精品99久久久久| 亚洲美女喷白浆| 国产一区欧美二区三区| 欧美激情xxxx性bbbb| 国产情人节一区| 欧美精品videosex极品1|