导航: 首页 > 开发技术 > 利用php操作mysql数据库类的实例讲解 发表于:2025-02-01 作者:千家信息网编辑 千家信息网最后更新 2025年02月01日,本篇内容主要讲解"利用php操作mysql数据库类的实例讲解",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"利用php操作mysql数据库类的实例讲解"吧! 千家信息网最后更新 2025年02月01日利用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安全错误 数据库的锁怎样保障安全 网络技术学什么科目好 如何新建一个文件地理数据库 河北特定软件开发规定 保障网络安全的措施我国 psycopg连接数据库 计算机企业网络安全防范总结 用友t3服务器连接不上 网络安全监测装置可研报告 我的世界刚开服的纯生存服务器 数据库登陆密码被串改 学计算机软件开发培训机构 两个数据库合并 军队网络安全技术专家 软件开发加同行 幼儿园网络安全自查工作总结 sql数据库企业管理器 软件开发工具指什么 最简单的网络安全画 ps4从建数据库 将网络安全法律要求规范化 网络安全法几部 启轩网络技术有限公司怎么样 数据库密码字段如何用 服务器上安装安全卫士 软件开发工程师招聘简章 连接MySQL数据库语句是什么 中国科学引文数据库的历史沿革 网民遭遇网络安全问题数据 黎明杀机服务器掉线 计算机网络技术培训材料 扫描关注千家信息网微信公众号,第一时间获取内容更新动态 转载请说明来源于"千家信息网" 本文地址: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