');
$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('The following error occurred when executing the sql statement '.$sql.':'.mysql_error());
return $this->rs;
}
function fetch_one($sql)
{
$this->rs=$this->query($sql);
Return dircms_strips tutorial lashes($this->filter_pass(mysql_fetch_array($this->rs,mysql_assoc)));
}
function get_maxfield($filed='id',$table) // Get the maximum value of the $filed field in the $table table
{
$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 //If the column type of auto_increment is bigint, the value returned by mysql_insert_id() will be incorrect.
{
$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); //Upgrade it and add a function to determine whether the field exists
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; ///////////////////// Return true if successful
Return false; //////////////Return false on failure
}
function create_table($tbname) //Create an empty table of member model (initially only the field userid int(20), used for member table, 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) // Filter dangerous characters
{
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', 'onmouseotutorialver', '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('/Web page effects:[^"']*/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);
}
}
I hope this article will be helpful to everyone’s PHP programming design.
http://www.bkjia.com/PHPjc/923906.html www.bkjia.com true http: //www.bkjia.com/PHPjc/923906.html TechArticle A simple and practical php operation mysql database class, simple and practical mysql This article describes a simple and practical php Operate mysql database class. Share it with everyone for your reference. The details are as follows...
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
2024-10-22 09:46:29
2024-10-13 13:53:41
2024-10-12 12:15:51
2024-10-11 22:47:31
2024-10-11 19:36:51
2024-10-11 15:50:41
2024-10-11 15:07:41
2024-10-11 14:21:21
2024-10-11 12:59:11
2024-10-11 12:17:31