数据库操作类简单再优化

<?php

    class Mysql{
        private $conn;    //数据库连接资源
        private $error;      //错误信息
        private $dbtype;  //所连接数据库类型
        private $host;      //主机名
        private $dbname;  //数据库名
        private $port;    //连接端口号
        private $user;    //连接用户名
        private $pwd;      //密码        
        private $charset; //设置连接所采用的字符集

        function __construct(){
            //载入配置文件
            include './include/config.php';
            $this->dbtype=$cfg['dbtype'];
            $this->host=$cfg['host'];
            $this->dbname=$cfg['dbname'];
            $this->port=$cfg['port'];
            $this->user=$cfg['user'];
            $this->pwd=$cfg['pwd'];
            $this->charset=$cfg['charset'];
            try{
                $conn=new PDO("$this->dbtype:host=$this->host;port=$this->port;dbname=$this->dbname",$this->user,$this->pwd);
                $this->conn=$conn;                
            }catch(PDOException $e){
                $this->error="数据库连接不成功!".$e->getMessage()."<br>";
            }
                $this->conn->query("set names $this->charset");
        }

        //查询所有行或者多行数据
        /* 参数:
            $table       表名
            $where      预留查询条件,默认为1即查询所有行
            return      array  $lists
        */
        public function getAll($table,$where=1){
            $sql="SELECT * FROM $table WHERE $where";
            $stmt=$this->statements($sql);
            $result=$stmt->execute();
            if($result){
                 $lists=$stmt->fetchAll(PDO::FETCH_ASSOC);
                 return $lists;
            }else{
                return false;
            }
        }
        //删除方法
        /*
            $table  表名
            $rowid  要删除的行
            return  bool
        */
        public function delete($table,$rowid){
            $sql="DELETE FROM $table WHERE CATE_ID='$rowid'";

            $stmt=$this->statements($sql);
            $res=$stmt->execute();
            //用受影响的行数来作为判断是否执行成功的条件
            if($res){
                return $stmt->rowCount();
            }else{
                return false;
            }
        
        }
    //获取单行数据
        /*参数:
            $table 表名
            $rowid 要查询的行
            return array $info
        */
        public function getRow($table,$rowid){
            $sql="SELECT * FROM $table WHERE CATE_ID='$rowid'";

            $stmt=$this->statements($sql);            
            $result=$stmt->execute();
            if($result){
                return $info=$stmt->fetch(PDO::FETCH_ASSOC);
            }else{
                return false;
            }
        }
        //更新数据
        public function update($table,$cate_id,$cate_name){
            $sql="UPDATE $table SET CATE_ID='$cate_id',CATE_NAME='$cate_name'WHERE CATE_ID='$cate_id'";

            $stmt=$this->statements($sql);
            $res=$stmt->execute();
            if($res){
                return $stmt->rowCount();
            }else{
                return false;
            }
        }
        //插入一行数据
        /* 参数:$table   表名
                 $data    POST全局数组
                 return    bool
        */
        public function add($table,$data){
            //SQL语句插入拼接处理
            $sql="insert into $table(";
            $sql.=implode(',',array_keys($data));
            $sql.=")values('";
            $sql.=implode("','",array_values($data));
            $sql.="')";
            //调用预处理方法
            $stmt=$this->statements($sql);
            $res=$stmt->execute();
            if($res){
                    return $stmt->rowCount();
            }else{
                    return false;
            }
        }
        /*预处理方法:将每次执行的sql语句保留到日志文件中,并返回预处理对象
         注:因为增删改查所需要返回的内容不同,所以不能把execute()方法封装到这个方法中
          参数:
            $sql    sql查询语句
            return  预处理对象
        */
        private function statements($sql){
            file_put_contents('sys.log',$sql."\n",FILE_APPEND);
            $stmt=$this->conn->prepare($sql);
            return $stmt;
        }

        //获取错误信息    
        public function getError(){
            return $this->error();
        }
    }
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值