本数据库操作类有两个文件构成,一个连接类,一个数据库操作基类。
此操作类的特点就是:1,自动接收参数,开发时无需手写接参 2,支持get,post两种
方式 3.支持批量删除,批量修改并且无需接收参数
*******个人原创,可用于实际项目中加快开发,转载请注明出处********
1.连接类:
<?php class DBUtil{ private static $con; private $server='localhost'; private $username='root'; private $password=''; private $database_name='test'; private $new_link=false; public function __construct(){ $this->con=mysql_connect($this->server,$this->username,$this->password,$this->new_link); mysql_select_db($this->database_name,$this->con); mysql_query("set names utf8"); } /** * * *获取链接 * @return 资源类型或false */ function getCon(){ return $this->con; } /** * * * 关闭链接 * @return true或false */ function closCon(){ if($this->con){ mysql_close($this->con); } } } ?>
2.操作基类
<?php require_once 'DBUtil.php'; date_default_timezone_set('Asia/Shanghai'); class BaseDB{ public static $con; public function __construct(){ $db=new DBUtil(); $this->con=$db->getCon(); } /** * * * 添加 * 表单字段过滤处理参数:array('passwd'=>1,'addtime'=>2,'edittime'=>2); 1:表示md5加密此字段 2:表示默认时间 * @param $table要操作的数据表名 * 此方法可接受post过来的请求,如需要其他请求提交,修改$param=$_POST;即可 */ public function add($table,$array=null){ $fileds=''; $values=''; if($_POST){ $keys=array_keys($_POST); $fileds=join(',',$keys); $i=0; while($val=current($_POST)){ $key=key($_POST); if($array && $array[$key]){ switch ($array[$key]){ case 1: $val=md5($val); break; case 2: $val=date('Y-m-d H:m:s'); break; default: break; } } if($i==count($_POST)-1 || count($_POST)==1){ $values.="'$val'"; }else{ $values.="'$val',"; } $i++; next($_POST); } }else if($_GET){ $keys=array_keys($_GET); $fileds=join(',',$keys); $i=0; while($val=current($_GET)){ $key=key($_GET); if($array && $array[$key]){ switch ($array[$key]){ case 1: $val=md5($val); break; case 2: $val=date('Y-m-d H:m:s'); break; default: break; } } if($i==count($_GET)-1 || count($_GET)==1){ $values.="'$val'"; }else{ $values.="'$val',"; } $i++; next($_GET); } }else{ return false; } $sql="insert into $table($fileds) values($values)"; echo $sql; return mysql_query($sql,$this->con) or die(mysql_error()); } /** * * * 查询 * @return * @param $table 表名 * @param $filed(数组) 要查询的字段 * @param $condition(字符串) 查询的条件 */ public function select($table,$filed='*',$condition=''){ if($filed!='*' && $filed){ $filed=join(',',$filed); } $sql="select $filed from $table $condition"; $res=mysql_query($sql,$this->con) or die(mysql_error()); return $res; } /** * * * 删除(支持post,get提交两种方式,支持批量删除【此时页面书写规则 name="数据库字段[]",例如id[],name[]等等】支持自定义删除字段); * @param string $table * @param array $condition * @param $model 删除模式(1:单条删除模式,2:多条删除模式),默认单条删除模式 */ public function delete($table,$model=1){ $sql=''; if($model==1){ $condition=''; if($_POST){ while($val=current($_POST)){ $key=key($_POST); $condition="and $key='$val'"; next($_POST); } }else if($_GET){ while($val=current($_GET)){ $key=key($_GET); $condition="and $key='$val'"; next($_GET); } }else{ return false; } $sql="delete from $table where 1=1 $condition"; }else if($model==2){ if($_POST){ $key=array_keys($_POST); $pramarr=$_POST[$key[0]]; $condition=implode(",",$pramarr); $sql="delete from $table where ".$key[0]." in (".$condition.")"; }else if($_GET){ $key=array_keys($_GET); $pramarr=$_GET[$key[0]]; $condition=implode(",",$pramarr); $sql="delete from $table where ".$key[0]." in (".$condition.")"; }else{ return false; } } return mysql_query($sql,$this->con); } /** * * * 编辑 * @param string $table 表名 * @param string $id 数据库表中的标识符字段(即标识编辑的哪条数据),支持get.post两种方式提交 * 表单字段过滤处理参数:array('passwd'=>1,'addtime'=>2,'edittime'=>2); 1:表示md5加密此字段 2:表示默认时间 * 多条更新语句sql如下 * sql="update test * set name =case id * when 4 then 'name1' * when 5 then 'name2' * when 6 then 'name3' * when 7 then 'name4' * end, * passwd=case id * when 4 then 'psswd1' * when 5 then 'psswd2' * when 6 then 'psswd3' * when 7 then 'psswd4' * end * where id in(4,5,6,7)"; */ public function edit($table,$array=null,$id,$model=1){ if($model==1){ //单条模式 $fileds=''; $values=''; $position=''; if($_POST){ $position=$_POST["$id"]; unset($_POST["$id"]); //去除条件字段 $keys=array_keys($_POST); $fileds=join(',',$keys); $i=0; while($val=current($_POST)){ $key=key($_POST); if($array && $array[$key]){ switch ($array[$key]){ case 1: $val=md5($val); break; case 2: $val=date('Y-m-d H:m:s'); break; default: break; } } if($i==count($_POST)-1 || count($_POST)==1){ $values.=$key."='$val'"; }else{ $values.=$key."='$val',"; } $i++; next($_POST); } }else if($_GET){ $position=$_GET['$id']; $keys=array_keys($_GET); $fileds=join(',',$keys); $i=0; while($val=current($_GET)){ $key=key($_GET); if($array && $array[$key]){ switch ($array[$key]){ case 1: $val=md5($val); break; case 2: $val=date('Y-m-d H:m:s'); break; default: break; } } if($i==count($_GET)-1 || count($_GET)==1){ $values.=$key."='$val'"; }else{ $values.=$key."='$val',"; } $i++; next($_GET); } }else{ return false; } $sql="update $table set $values where $id='$position'"; return mysql_query($sql,$this->con); } if($model==2){ //多条模式 $sql=''; if($_POST){ $post=$_POST; //将$_POST赋值给新的变量,不影响修改主要依据标记字段删除对此$_POST的影响 unset($post[$id]); //清除修改主要依据标记字段 $sql.="update test set "; $i=0; //用于字段末位计数 while($val=current($post)){ $key=key($post); $ids=$_POST[$id]; $sql.="$key =case $id "; foreach($post[$key] as $key1=>$val){ if($array && $array[$key]){ //特殊字段处理 switch ($array[$key]){ case 1: $val=md5($val); break; case 2: $val=date('Y-m-d H:m:s'); break; default: break; } } $sql.="when '$ids[$key1]' then '$val' "; } if($i==count($post)-1){ $sql.='end '; }else{ $sql.='end,'; } next($post); $i++; } $inids=join(',',$ids); $sql.="where id in($inids)"; }else if($_GET){ $get=$_GET; //将$_POST赋值给新的变量,不影响修改主要依据标记字段删除对此$_POST的影响 unset($get[$id]); //清除修改主要依据标记字段 $sql.="update test set "; $i=0; //用于字段末位计数 while($val=current($get)){ $key=key($get); $ids=$_GET[$id]; $sql.="$key =case $id "; foreach($get[$key] as $key1=>$val){ if($array && $array[$key]){ //特殊字段处理 switch ($array[$key]){ case 1: $val=md5($val); break; case 2: $val=date('Y-m-d H:m:s'); break; default: break; } } $sql.="when '$ids[$key1]' then '$val' "; } if($i==count($get)-1){ $sql.='end '; }else{ $sql.='end,'; } next($get); $i++; } $inids=join(',',$ids); $sql.="where id in($inids)"; }else{ return false; } echo $sql; return mysql_query($sql,$this->con); } } function safe($s){ //安全过滤函数 if(get_magic_quotes_gpc()){ $s=stripslashes($s); } $s=mysql_real_escape_string($s); return $s; } } ?>