导航: 首页 > 开发技术 > 利用php操作mysql数据库类的实例讲解 发表于:2024-11-25 作者:千家信息网编辑 千家信息网最后更新 2024年11月25日,本篇内容主要讲解"利用php操作mysql数据库类的实例讲解",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"利用php操作mysql数据库类的实例讲解"吧! 千家信息网最后更新 2024年11月25日利用php操作mysql数据库类的实例讲解本篇内容主要讲解"利用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', '');$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.'';$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; ///////////////////// 当表名已经存在时,返回 falseif($this->query("create table `{$tbname}` (`contentid` mediumint(8) not null ,`content` mediumtext not null,key ( `contentid` )) engine = myisam default charset=utf8",true))return true; //////////////////// 成功则返回 truereturn 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操作mysql数据库类的实例讲解"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习! 很赞哦! 字段 数据 数据库 实例 内容 实用 代码 会员 只有 性质 教程 模型 学习 查询 更深 最大 危险 成功 信息 关键 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 宇视平台管理服务器 丽水专业从事进销存软件开发 用户登录的数据库设计 数据库设置关系时可设置的选项 南通从事软件开发工资待遇 数据库原理与技术自考 宣城oa管理软件开发定制公司 工行软件开发岗职级 汇新杯新兴科技加互联网 阿里如何管理数据库 数据库操作系统安全保护 打开数据库时应按住 企家有道网络技术有限公司网站 平谷区专业软件开发大概费用 服务器安装需要几天 a股十大互联网股顺网科技 学习软件开发前景 jdbc查询数据库注解 服务器配置一台需要多长时间 将数据库表列间的空格去掉 徐玉玉 网络安全 如何把管家婆数据库放在私有云 一台服务器做多个raid5 赞皇高科技软件开发服务装饰 常见网络安全风险措施思维导图 歙县软件开发系统 我的世界服务器497697 温州专业冷库软件开发 新建一个德语数据库怎么做 软件开发 架构设计 软件 扫描关注千家信息网微信公众号,第一时间获取内容更新动态 转载请说明来源于"千家信息网" 本文地址:https://www.qianjiagd.com/a72378 上一篇 Python web开发框架的具体操作步骤是什么 这篇文章给大家介绍Python web开发框架的具体操作步骤是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在windows 或是别的操作系统里,我们所使用的manager. 下一篇 有哪些Python代码能帮我们掌握基本音乐理论 本篇文章为大家展示了有哪些Python代码能帮我们掌握基本音乐理论,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们将首先查看西方音乐理论中的音符,使用它们来 相关文章 PHP中session会话操作技巧有哪些 PHP类相关知识点有哪些 VS2008无法直接查看STL值怎么办 php版微信公众平台之微信网页登陆授权的示例分析 中高级PHP程序员应该掌握什么技术 CI框架出现mysql数据库连接资源无法释放怎么办 ajax跨域访问报错501怎么办 什么是RPC框架 .net mvc超过了最大请求长度怎么办 php分页原理的示例分析 0