加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

一款简单实用的php操作mysql数据库类

发布时间:2020-12-12 20:33:08 所属栏目:PHP教程 来源:网络整理
导读:本篇章节讲解一款简单实用的php操作mysql数据库类。供大家参考研究。具体如下: 代码如下: function __construct($hostname,$username,$userpwd,$database,$pconnect=false,$charset='utf8') { define('allowed_htmltags',' tabletrtd '); $this-pco

本篇章节讲解一款简单实用的php操作mysql数据库类。分享给大家供大家参考。具体如下:

代码如下:
function __construct($hostname,$username,$userpwd,$database,$pconnect=false,$charset='utf8')
{
define('allowed_htmltags','<meta><body><p><br><hr><h1><h2><h3><h4><h5><h6><font><u><i><b><h3><div><span><ol><ul><li><img><table><tr><td><map>');<br /> $this->pconnect=$pconnect;<br /> $this->dblink=$pconnect?mysql_pconnect($hostname,$userpwd):mysql_connect($hostname,$userpwd);<br /> (!$this->dblink||!is_resource($this->dblink)) && fatal_error("connect to the database unsuccessfully!");<br /> @mysql_unbuffered_query("set names {$charset}");<br /> if($this->version()>'5.0.1')<br /> {<br /> @mysql_unbuffered_query("set sql_mode = ''");<br /> }<br /> @mysql_select_db($database) or fatal_error("can not select table!");<br /> return $this->dblink;<br /> } </p> <p>function query($sql,$unbuffered=false)<br /> {<br /> //echo $sql.'<br>';<br /> $this->rs=$unbuffered?mysql_unbuffered_query($sql,$this->dblink):mysql_query($sql,$this->dblink);<br /> //(!$this->rs||!is_resource($this->rs)) && fatal_error("execute the query unsuccessfully! error:".mysql_error());<br /> if(!$this->rs)fatal_error('在执行sql语句 '.$sql.' 时发生以下错误:'.mysql_error());<br /> return $this->rs;<br /> } </p> <p>function fetch_one($sql)<br /> {<br /> $this->rs=$this->query($sql);<br /> return dircms_strips教程lashes($this->filter_pass(mysql_fetch_array($this->rs,mysql_assoc)));<br /> } </p> <p>function get_maxfield($filed='id',$table) // 获取$table表中$filed字段的最大值<br /> {<br /> $r=$this->fetch_one("select {$table}.{$filed} from <code>{$table}</code> order by <code>{$table}</code>.<code>{$filed}</code> desc limit 0,1");<br /> return $r[$filed];<br /> } </p> <p>function fetch_all($sql)<br /> {<br /> $this->rs=$this->query($sql);<br /> $result=array();<br /> while($rows=mysql_fetch_array($this->rs,mysql_assoc))<br /> {<br /> $result[]=$rows;<br /> } </p> <p>mysql_free_result($this->rs);<br /> return dircms_stripslashes($this->filter_pass($result));<br /> } </p> <p>function fetch_all_withkey($sql,$key='id')<br /> {<br /> $this->rs=$this->query($sql);<br /> $result=array();<br /> while($rows=mysql_fetch_array($this->rs,mysql_assoc))<br /> {<br /> $result[$rows[$key]]=$rows;<br /> } </p> <p>mysql_free_result($this->rs);<br /> return dircms_stripslashes($this->filter_pass($result));<br /> } </p> <p>function last_insert_id()<br /> {<br /> if(($insertid=mysql_insert_id($this->dblink))>0)return $insertid;<br /> else //如果 auto_increment 的列的类型是 bigint,则 mysql_insert_id() 返回的值将不正确.<br /> {<br /> $result=$this->fetch_one('select last_insert_id() as insertid');<br /> return $result['insertid'];<br /> }<br /> } </p> <p>function insert($tbname,$varray,$replace=false)<br /> {<br /> $varray=$this->escape($varray);<br /> $tb_fields=$this->get_fields($tbname); // 升级一下,增加判断字段是否存在 </p> <p>foreach($varray as $key => $value)<br /> {<br /> if(in_array($key,$tb_fields))<br /> {<br /> $fileds[]='<code>'.$key.'</code>';<br /> $values[]=is_string($value)?'''.$value.''':$value;<br /> }<br /> } </p> <p>if($fileds)<br /> {<br /> $fileds=implode(',',$fileds);<br /> $fileds=str_replace(''','`',$fileds);<br /> $values=implode(',$values);<br /> $sql=$replace?"replace into {$tbname}({$fileds}) values ({$values})":"insert into {$tbname}({$fileds}) values ({$values})";<br /> $this->query($sql,true);<br /> return $this->last_insert_id();<br /> }<br /> else return false;<br /> } </p> <p>function update($tbname,$array,$where = '')<br /> {<br /> $array=$this->escape($array);<br /> if($where)<br /> {<br /> $tb_fields=$this->get_fields($tbname); // 增加判断字段是否存在 </p> <p>$sql = '';<br /> foreach($array as $k=>$v)<br /> {<br /> if(in_array($k,$tb_fields))<br /> {<br /> $k=str_replace(''','',$k);<br /> $sql .= ",<code>$k</code>='$v'";<br /> }<br /> }<br /> $sql = substr($sql,1); </p> <p>if($sql)$sql = "update <code>$tbname</code> set $sql where $where";<br /> else return true;<br /> }<br /> else<br /> {<br /> $sql = "replace into <code>$tbname</code>(<code>".implode('</code>,<code>',array_keys($array))."</code>) values('".implode("','",$array)."')";<br /> }<br /> return $this->query($sql,true);<br /> } </p> <p>function mysql_delete($tbname,$idarray,$filedname='id')<br /> {<br /> $idwhere=is_array($idarray)?implode(',$idarray):intval($idarray);<br /> $where=is_array($idarray)?"{$tbname}.{$filedname} in ({$idwhere})":" {$tbname}.{$filedname}={$idwhere}"; </p> <p>return $this->query("delete from {$tbname} where {$where}",true);<br /> } </p> <p>function get_fields($table)<br /> {<br /> $fields=array();<br /> $result=$this->fetch_all("show columns from <code>{$table}</code>");<br /> foreach($result as $val)<br /> {<br /> $fields[]=$val['field'];<br /> }<br /> return $fields;<br /> } </p> <p>function get_table_status($database)<br /> {<br /> $status=array();<br /> $r=$this->fetch_all("show table status from <code>".$database."</code>"); /////// show table status的性质与show table类似,不过,可以提供每个表的大量信息。<br /> foreach($r as $v)<br /> {<br /> $status[]=$v;<br /> }<br /> return $status;<br /> } </p> <p>function get_one_table_status($table)<br /> {<br /> return $this->fetch_one("show table status like '$table'");<br /> } </p> <p>function create_fields($tbname,$fieldname,$size=0,$type='varchar') // 2010-5-14 修正一下<br /> {<br /> if($size)<br /> {<br /> $size=strtoupper($type)=='varchar'?$size:8;<br /> $this->query("alter table <code>{$tbname}</code> add <code>$fieldname</code> {$type}( {$size} ) not null",true);<br /> }<br /> else $this->query("alter table <code>{$tbname}</code> add <code>$fieldname</code> mediumtext not null",true);<br /> return true;<br /> } </p> <p>function get_tables() //获取所有表表名<br /> {<br /> $tables=array();<br /> $r=$this->fetch<em>all("show tables");<br /> foreach($r as $v)<br /> {<br /> foreach($v as $v</em>)<br /> {<br /> $tables[]=$v_;<br /> }<br /> }<br /> return $tables;<br /> } </p> <p>function create_model_table($tbname) //创建一个内容模型表(start:初始只有字段contentid int(20),用于内容表,/////////////////////// update:2010-5-20 默认加入<code>content</code> mediumtext not null,字段)<br /> {<br /> if(in_array($tbname,$this->get_tables())) return false; ///////////////////// 当表名已经存在时,返回 false<br /> if($this->query("create table <code>{$tbname}</code> (<br /> <code>contentid</code> mediumint(8) not null,<br /> <code>content</code> mediumtext not null,<br /> key ( <code>contentid</code> )<br /> ) engine = myisam default charset=utf8",true))return true; //////////////////// 成功则返回 true<br /> return false; //////////////失败返回 false<br /> } </p> <p>function create_table($tbname) //创建一个会员模型空表(初始只有字段userid int(20),用于会员表,2010-4-26)<br /> {<br /> if(in_array($tbname,$this->get_tables())) return false;<br /> if($this->query("create table <code>{$tbname}</code> (<br /> <code>userid</code> mediumint(8) not null,<br /> key ( <code>userid</code> )<br /> ) engine = myisam default charset=utf8",true))return true;<br /> return false;<br /> } </p> <p>function escape($str) // 过滤危险字符<br /> {<br /> 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));<br /> foreach($str as $key=>$val) $str[$key] = $this->escape($val);<br /> return $str;<br /> } </p> <p>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'))<br /> {<br /> if(is_array($string))<br /> {<br /> foreach($string as $key => $val) $string[$key] = $this->filter_pass($val,allowed_htmltags);<br /> }<br /> else<br /> {<br /> $string = preg_replace('/s('.implode('|',$disabledattributes).').<em>?([s>])/','',preg_replace('/<(.</em>?)>/ie',"'<'.preg_replace(array('/网页特效:[^"']<em>/i','/(".implode('|',$disabledattributes).")[ ]</em>=[ ]<em>["'][^"']</em>["']/i','/s+/'),array('',' '),stripslashes('')) . '>'",strip_tags($string,$allowedtags)));<br /> }<br /> return $string;<br /> } </p> <p>function drop_table($tbname)<br /> {<br /> return $this->query("drop table if exists <code>{$tbname}</code>",true);<br /> } </p> <p>function version()<br /> {<br /> return mysql_get_server_info($this->dblink);<br /> }<br /> } </p> </div></p> <p>希望本文所述对大家的PHP程序设计有所帮助。</p> <p style="text-align:right;">(编辑:李大同)</p> <p style="text-align:right;">【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!</p> </td> </tr> </table> </div> <div class="dede_pagess"><ul class="pagelist"></ul></div> <div class="ad-690"><script src='https://ess.0577qiche.com/d/js/acmsd/ad76.js' language='javascript'></script></div> <div class="g-box10"> <div class="t-2">相关内容</div> <ul class="b-box12"></ul> <ul class="b-box13"><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1212/78533.html" target="_blank">利用php操作memcache缓存的基础方法示例</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1213/141649.html" target="_blank">阻止访问php.ini文件</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1213/101380.html" target="_blank">php – JSON或XML在iOS上的性能更高吗?</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1213/140215.html" target="_blank">如何在PHP mail()函数中包含对文件的调用</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1213/99600.html" target="_blank">php睡眠功能奇怪的行为</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1213/134608.html" target="_blank">php中include()带参考传递实例</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1212/75429.html" target="_blank">PHP中each与list用法分析</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1213/99443.html" target="_blank">php – Bootstrap:活动类</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1212/78160.html" target="_blank">解决php 处理 form 表单提交多个 name 属性值相同的 input </a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1212/73780.html" target="_blank">PHP随机生成信用卡卡号的方法</a></li><div class="cl"></div></ul> </div> </div> </div> <div class="right-1 fr"> <div class="g-box8"> <div class="t-2">推荐文章</div> <ul></ul> </div> <div class="g-box11"> <div class="t-2">站长推荐</div> <ul class="b-box7"><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1213/93864.html" target="_blank">php – 在Heredoc内格式化数组值</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1212/78213.html" target="_blank">Yii 2.0如何使用页面缓存方法示例</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1213/102637.html" target="_blank">php – 如何处理?_escaped_fragment_ =用于AJAX</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1213/101837.html" target="_blank">php – Zend Framework – 未找到’LEV’货币</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1213/86722.html" target="_blank">php使用递归计算目录大小</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1212/71666.html" target="_blank">百度实时推送api接口应用示例</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1212/71513.html" target="_blank">PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYS</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1213/107286.html" target="_blank">php – cURL响应不可读</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1213/112782.html" target="_blank">php 连接redis</a></li><li><a href="https://www.lidatong.com.cn/html/jc/php/2020/1213/86815.html" target="_blank">用PHP实现的生成静态HTML速度快类库</a></li></ul> </div> <script type="text/javascript">jQuery(".g-box8").slide({ titCell:"li",triggerTime:0 }); </script> <div class="ad-250"><script src='https://ess.0577qiche.com/d/js/acmsd/ad103.js' language='javascript'></script></div> <div class="g-box3 u-3"> <div class="t-1">热点阅读</div> <ul class="b-box2"></ul> </div> <div class="ad-250"><script src='https://ess.0577qiche.com/d/js/acmsd/ad77.js' language='javascript'></script></div> </div> <div class="cl"></div> </div> <div class="ad-960"><script src='https://ess.0577qiche.com/d/js/acmsd/ad78.js' language='javascript'></script></div> <div class="footer"> <p>【免责声明】本站内容转载自互联网,其发布内容言论不代表本站观点,如果其链接、内容的侵犯您的权益,烦请提交相关链接至邮箱bqsm@foxmail.com我们将及时予以处理。</p> <p>建议您使用1920×1080分辨率、谷歌浏览器Google Chrome、Microsoft Edge以获得本站的最佳浏览效果</p> <p>Copygight © 2008-2022 https://www.lidatong.com.cn/ All Rights Reserved. 李大同</p> <p><script type="text/javascript" src="//js.users.51.la/21280179.js"></script></p> </div> </body> </html>