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

首頁 > 語言 > PHP > 正文

一款實用的php mysql數據庫連接類

2024-09-04 11:44:07
字體:
來源:轉載
供稿:網友
  1. /* 
  2. 本款數據庫連接類,他會自動加載sql防注入功能,過濾一些敏感的sql查詢關鍵詞,同時還可以增加判斷字段 show table status的性質與show table類 獲取數據庫所有表名等。*/ 
  3. @ini_set('mysql.trace_mode','off'); 
  4. class mysql 
  5. {//開源代碼Vevb.com 
  6.  public $dblink; 
  7.  public $pconnect; 
  8.  private $search = array('/union(s*(/*.**/)?s*)+select/i''/load_file(s*(/*.**/)?s*)+(/i''/into(s*(/*.**/)?s*)+outfile/i'); 
  9.  private $replace = array('union   select''load_file   (''into   outfile'); 
  10.  private $rs; 
  11.  
  12.  function __construct($hostname,$username,$userpwd,$database,$pconnect=false,$charset='utf8'
  13.  { 
  14.   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>');  
  15.   $this->pconnect=$pconnect; 
  16.   $this->dblink=$pconnect?mysql_pconnect($hostname,$username,$userpwd):mysql_connect($hostname,$username,$userpwd); 
  17.   (!$this->dblink||!is_resource($this->dblink)) && fatal_error("connect to the database unsuccessfully!"); 
  18.   @mysql_unbuffered_query("set names {$charset}"); 
  19.   if($this->version()>'5.0.1'
  20.   { 
  21.    @mysql_unbuffered_query("set sql_mode = ''"); 
  22.   } 
  23.   @mysql_select_db($database) or fatal_error("can not select table!"); 
  24.   return $this->dblink; 
  25.  } 
  26.  
  27.  function query($sql,$unbuffered=false
  28.  { 
  29.   //echo $sql.'<br>'; 
  30.   $this->rs=$unbuffered?mysql_unbuffered_query($sql,$this->dblink):mysql_query($sql,$this->dblink); 
  31.   //(!$this->rs||!is_resource($this->rs)) && fatal_error("execute the query unsuccessfully! error:".mysql_error()); 
  32.   if(!$this->rs)fatal_error('在執行sql語句 '.$sql.' 時發生以下錯誤:'.mysql_error()); 
  33.   return $this->rs; 
  34.  } 
  35.  
  36.  function fetch_one($sql) 
  37.  { 
  38.   $this->rs=$this->query($sql); 
  39.   return dircms_strips教程lashes($this->filter_pass(mysql_fetch_array($this->rs,mysql_assoc))); 
  40.  } 
  41.  
  42.  function get_maxfield($filed='id',$table) // 獲取$table表中$filed字段的最大值 
  43.  { 
  44.   $r=$this->fetch_one("select {$table}.{$filed} from `{$table}` order by `{$table}`.`{$filed}` desc limit 0,1"); 
  45.   return $r[$filed]; 
  46.  } 
  47.  
  48.  function fetch_all($sql) 
  49.  { 
  50.   $this->rs=$this->query($sql); 
  51.   $result=array(); 
  52.   while($rows=mysql_fetch_array($this->rs,mysql_assoc)) 
  53.   { 
  54.    $result[]=$rows; 
  55.   } 
  56.    
  57.   mysql_free_result($this->rs); 
  58.   return dircms_stripslashes($this->filter_pass($result));  
  59.  } 
  60.  
  61.  function fetch_all_withkey($sql,$key='id'
  62.  { 
  63.   $this->rs=$this->query($sql); 
  64.   $result=array(); 
  65.   while($rows=mysql_fetch_array($this->rs,mysql_assoc)) 
  66.   { 
  67.    $result[$rows[$key]]=$rows; 
  68.   } 
  69.    
  70.   mysql_free_result($this->rs); 
  71.   return dircms_stripslashes($this->filter_pass($result));  
  72.  } 
  73.  
  74.  function last_insert_id() 
  75.  { 
  76.   if(($insertid=mysql_insert_id($this->dblink))>0)return $insertid; 
  77.   else //如果 auto_increment 的列的類型是 bigint,則 mysql_insert_id() 返回的值將不正確. 
  78.   { 
  79.    $result=$this->fetch_one('select last_insert_id() as insertid'); 
  80.    return $result['insertid']; 
  81.   } 
  82.  } 
  83.  
  84.  function insert($tbname,$varray,$replace=false
  85.  { 
  86.   $varray=$this->escape($varray); 
  87.   $tb_fields=$this->get_fields($tbname); // mb.111cn.net 升級一下,增加判斷字段是否存在 
  88.    
  89.   foreach($varray as $key => $value) 
  90.   { 
  91.    if(in_array($key,$tb_fields)) 
  92.    { 
  93.     $fileds[]='`'.$key.'`'
  94.     $values[]=is_string($value)?'''.$value.''':$value; 
  95.    } 
  96.   } 
  97.  
  98.   if($fileds) 
  99.   { 
  100.    $fileds=implode(',',$fileds); 
  101.    $fileds=str_replace(''','`',$fileds); 
  102.    $values=implode(',',$values); 
  103.    $sql=$replace?"replace into {$tbname}({$fileds}) values ({$values})":"insert into {$tbname}({$fileds}) values ({$values})"
  104.    $this->query($sql,true); 
  105.    return $this->last_insert_id(); 
  106.   } 
  107.   else return false
  108.  } 
  109.  
  110.  function update($tbname, $array, $where = ''
  111.  { 
  112.   $array=$this->escape($array); 
  113.   if($where) 
  114.   { 
  115.    $tb_fields=$this->get_fields($tbname); // www.111cn.net,增加判斷字段是否存在 
  116.     
  117.    $sql = ''
  118.    foreach($array as $k=>$v) 
  119.    { 
  120.     if(in_array($k,$tb_fields)) 
  121.     { 
  122.      $k=str_replace(''','',$k); 
  123.      $sql .= ", `$k`='$v'"
  124.     } 
  125.    } 
  126.    $sql = substr($sql, 1); 
  127.     
  128.    if($sql)$sql = "update `$tbname` set $sql where $where"
  129.    else return true
  130.   } 
  131.   else 
  132.   { 
  133.    $sql = "replace into `$tbname`(`".implode('`,`', array_keys($array))."`) values('".implode("','", $array)."')"
  134.   } 
  135.   return $this->query($sql,true); 
  136.  } 
  137.   
  138.  function mysql_delete($tbname,$idarray,$filedname='id'
  139.  { 
  140.   $idwhere=is_array($idarray)?implode(',',$idarray):intval($idarray); 
  141.   $where=is_array($idarray)?"{$tbname}.{$filedname} in ({$idwhere})":" {$tbname}.{$filedname}={$idwhere}"
  142.  
  143.   return $this->query("delete from {$tbname} where {$where}",true); 
  144.  } 
  145.  
  146.  function get_fields($table) 
  147.  { 
  148.   $fields=array(); 
  149.   $result=$this->fetch_all("show columns from `{$table}`"); 
  150.   foreach($result as $val) 
  151.   { 
  152.    $fields[]=$val['field']; 
  153.   } 
  154.   return $fields; 
  155.  } 
  156.  
  157.  function get_table_status($database) 
  158.  { 
  159.   $status=array(); 
  160.   $r=$this->fetch_all("show table status from `".$database."`"); /////// show table status的性質與show table類似,不過,可以提供每個表的大量信息。 
  161.   foreach($r as $v) 
  162.   { 
  163.    $status[]=$v; 
  164.   } 
  165.   return $status; 
  166.  } 
  167.  
  168.  function get_one_table_status($table) 
  169.  { 
  170.   return $this->fetch_one("show table status like '$table'"); 
  171.  } 
  172.  
  173.  function create_fields($tbname,$fieldname,$size=0,$type='varchar'// 2010-5-14 修正一下 
  174.  {   
  175.   if($size) 
  176.   { 
  177.    $size=strtoupper($type)=='varchar'?$size:8; 
  178.    $this->query("alter table `{$tbname}` add `$fieldname` {$type}( {$size} )  not null",true); 
  179.   } 
  180.   else $this->query("alter table `{$tbname}` add `$fieldname` mediumtext  not null",true); 
  181.   return true
  182.  } 
  183.  
  184.  function get_tables() //獲取所有表表名 
  185.  { 
  186.   $tables=array(); 
  187.   $r=$this->fetch_all("show tables"); 
  188.   foreach($r as $v) 
  189.   { 
  190.    foreach($v as $v_) 
  191.    { 
  192.     $tables[]=$v_; 
  193.    } 
  194.   } 
  195.   return $tables; 
  196.  } 
  197.  
  198.  function create_model_table($tbname) //創建一個內容模型表(start:初始只有字段contentid int(20),用于內容表,/////////////////////// update:2010-5-20     默認加入`content` mediumtext not null,字段) 
  199.  { 
  200.   if(in_array($tbname,$this->get_tables())) return false;  ///////////////////// 當表名已經存在時,返回 false 
  201.   if($this->query("create table `{$tbname}` ( 
  202. `contentid` mediumint(8) not null , 
  203. `content` mediumtext not null
  204. key ( `contentid` )  
  205. ) engine = myisam default charset=utf8",true))return true;   ////////////////////  成功則返回 true 
  206.   return false//////////////失敗返回 false 
  207.  } 
  208.  
  209.  function create_table($tbname) //創建一個會員模型空表(初始只有字段userid int(20),用于會員表,2010-4-26) 
  210.  { 
  211.   if(in_array($tbname,$this->get_tables())) return false
  212.   if($this->query("create table `{$tbname}` ( 
  213. `userid` mediumint(8) not null , 
  214. key ( `userid` )  
  215. ) engine = myisam default charset=utf8",true))return true
  216.   return false
  217.  } 
  218.  
  219.  function escape($str) // 過濾危險字符 
  220.  { 
  221.   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)); 
  222.   foreach($str as $key=>$val) $str[$key] = $this->escape($val); 
  223.   return $str; 
  224.  } 
  225.  
  226.  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')) 
  227.  { 
  228.   if(is_array($string)) 
  229.   { 
  230.    foreach($string as $key => $val) $string[$key] = $this->filter_pass($val, allowed_htmltags); 
  231.   } 
  232.   else 
  233.   { 
  234.    $string = preg_replace('/s('.implode('|', $disabledattributes).').*?([s>])/''', preg_replace('/<(.*?)>/ie'"'<'.preg_replace(array('/網頁特效:[^"']*/i', '/(".implode('|', $disabledattributes).")[ ]*=[ ]*["'][^"']*["']/i', '/s+/'), array('', '', ' '), stripslashes('')) . '>'", strip_tags($string, $allowedtags))); 
  235.   } 
  236.   return $string; 
  237.  } 
  238.  
  239.  function drop_table($tbname) 
  240.  { 
  241.   return $this->query("drop table if exists `{$tbname}`",true); 
  242.  } 
  243.  
  244.  function version() 
  245.  { 
  246.   return mysql_get_server_info($this->dblink); 
  247.  } 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲最大福利视频网| 精品激情国产视频| 亚洲成人精品视频| 97国产精品视频| 成人信息集中地欧美| 岛国视频午夜一区免费在线观看| 亚洲精品v欧美精品v日韩精品| 久久综合伊人77777尤物| 国产精品视频男人的天堂| 性视频1819p久久| 国产成人a亚洲精品| 国产不卡一区二区在线播放| 欧美精品一区在线播放| 精品国产一区久久久| 国产亚洲精品久久久| 国产日韩在线亚洲字幕中文| 成人网在线视频| 亚洲成人久久一区| 国产精品igao视频| 午夜免费在线观看精品视频| 国产福利精品av综合导导航| 另类图片亚洲另类| 欧美一区二区三区四区在线| 久久久久久亚洲精品不卡| 国产精品偷伦免费视频观看的| 91九色在线视频| 精品人伦一区二区三区蜜桃免费| 色综合影院在线| 福利一区福利二区微拍刺激| 91欧美精品午夜性色福利在线| 久久伊人色综合| 欧美激情成人在线视频| 国产精品日韩在线一区| 国产日韩亚洲欧美| 久久精品人人做人人爽| 成人久久久久久久| 狠狠干狠狠久久| 91精品视频播放| 97国产suv精品一区二区62| 欧美午夜精品伦理| 欧美一区视频在线| 亚洲91精品在线观看| 成人免费视频xnxx.com| 久久精品99久久香蕉国产色戒| 久久久亚洲福利精品午夜| 欧美激情18p| 亚洲一区二区黄| 亚洲精品xxxx| 91色琪琪电影亚洲精品久久| 国产欧美精品久久久| 久久成人精品电影| 伊人伊成久久人综合网站| 久久视频精品在线| 中文字幕精品在线| 国产视频在线一区二区| 国产欧美日韩精品专区| 国产精品视频色| 日韩美女视频免费看| 欧美成人h版在线观看| 亚洲最新在线视频| 欧美成人精品一区二区| 在线播放精品一区二区三区| 午夜精品www| 精品亚洲一区二区三区在线观看| 久久噜噜噜精品国产亚洲综合| 久久久视频精品| 亚洲国产日韩精品在线| 欧美精品videosex性欧美| 日本最新高清不卡中文字幕| 国产精品狠色婷| 久久精品国产清自在天天线| 久久九九有精品国产23| 亚洲电影成人av99爱色| 亚洲黄色片网站| 97在线视频一区| 78m国产成人精品视频| 热99精品只有里视频精品| 日韩精品高清视频| 国产亚洲美女精品久久久| 国产有码在线一区二区视频| 成人h片在线播放免费网站| 777午夜精品福利在线观看| 国产成人在线一区| 亚洲国产精品大全| 国产精品欧美日韩| 亚洲国产精品福利| 亚洲一区二区三区视频播放| 亚洲国产精品推荐| 91欧美精品午夜性色福利在线| 91在线精品视频| 欧美国产日韩一区二区在线观看| 国产国语刺激对白av不卡| 国产激情久久久| 久久久综合免费视频| 国产精品欧美亚洲777777| 亚洲国产欧美一区二区三区同亚洲| 亚洲午夜久久久影院| 日韩女优人人人人射在线视频| 国产视频精品久久久| 欧美午夜精品久久久久久人妖| 欧美性猛交xxxx| 欧美小视频在线观看| 精品久久久久久久久久| 日韩少妇与小伙激情| 8x海外华人永久免费日韩内陆视频| 国产精品久久久久久av福利软件| 最近2019中文字幕一页二页| 亚洲成人性视频| 国产精品白嫩美女在线观看| 国产亚洲a∨片在线观看| 美日韩在线视频| 91免费版网站入口| 亚洲国产精品一区二区久| 欧美综合第一页| 永久免费看mv网站入口亚洲| 久热在线中文字幕色999舞| 欧美一级在线播放| 成人免费在线视频网站| 亚洲国产精品久久久久| 91精品国产91久久久久| 国产盗摄xxxx视频xxx69| 日韩成人在线电影网| 欧美性极品少妇精品网站| 国产精品日韩一区| 日韩黄色av网站| 亚洲欧美精品中文字幕在线| 欧洲午夜精品久久久| 欧美性高跟鞋xxxxhd| 欧美精品手机在线| 97精品一区二区三区| 97精品视频在线播放| 亚洲国产成人av在线| 欧美激情一区二区三级高清视频| 国产99久久久欧美黑人| 成人黄色片在线| 中日韩午夜理伦电影免费| 欧美日韩一区二区在线| 91免费视频国产| 欧美激情免费观看| 国产欧美一区二区三区四区| 欧美激情三级免费| 日韩一区二区精品视频| 亚洲精品资源美女情侣酒店| 国产综合在线视频| 亚洲第一区第一页| 欧美日韩国产中文精品字幕自在自线| 亚洲国语精品自产拍在线观看| 国内偷自视频区视频综合| 亚洲激情第一页| 国产精品视频在线观看| 亚洲综合视频1区| 亚洲欧美日韩久久久久久| 亚洲电影第1页| 一区二区三区久久精品| 欧美xxxx做受欧美| 国内精品美女av在线播放| 久久韩国免费视频| 亚洲精品色婷婷福利天堂| 亚洲自拍偷拍区| 国产精品黄色影片导航在线观看| 国产美女高潮久久白浆| 国产精品久久久久久久av大片| 国产视频久久久久| 亚洲国产精品免费|