功能强大的php数据库操作类的实现

本数据库操作类有两个文件构成,一个连接类,一个数据库操作基类。

此操作类的特点就是: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;
    }
     
     
     }
         
?>


你可能感兴趣的:(数据库,PHP,数据库操作,php数据库操作类,功能强大的php数据库操作)