zoukankan      html  css  js  c++  java
  • 单例模式实现简单的mysql操作类

    单例模式实现简单的mysql操作类

    为什么要弄个抽象类,原因是不清楚还会不会在代码基础上继续拓展。所以就先写上了。

    代码:

    抽象类:

    <?php
        abstract class Mysql
        {
            abstract protected function connect();
            abstract protected function query($sql);
            abstract protected function err($sql='');
        }

    操作类:

    <?php
    require_once('./Mysql.php');
        class db extends Mysql
        {
            private $config = array(
                'DB_HOST' => '127.0.0.1',   //主机
                'DB_USER' => 'root',        //用户名    
                'DB_PWD' => 'root',        //密码
                'DB_NAME' => 'test',        //数据库名
                'DB_CHARSET' => 'utf8',        //字符集
            );
            private $link;             //数据库连接标识;
            private $rows;             //查询获取的多行数组
            private $result;            //查询结果
            static $_instance; //存储对象
    
            private function __construct($config=array()){
                $this->config = $config ? $config : $this->config;
                $this->connect();
                
            }  
    
            //防止克隆
            private function __clone(){}
    
            //连接数据库
            public function connect()
            {
                $this->link = mysqli_connect($this->config['DB_HOST'],$this->config['DB_USER'],$this->config['DB_PWD']) or die(mysqli_connect_errno());
                mysqli_select_db($this->link,$this->config['DB_NAME']) or die(mysqli_error($this->link));
                $this->query("SET NAMES ".$this->config['DB_CHARSET']);
                return $this->link;
            }
    
            //查询数据
            public function query($sql) {
                $this->result = mysqli_query($this->link,$sql) or $this->err($sql);
                return $this->result;
            }
    
            protected function err($sql='')
            {
                echo '错误得sql语句'.$sql;
                exit;
            }
    
            //单例模式
            public static function getInstance(){
                if(FALSE == (self::$_instance instanceof self)){
                    self::$_instance = new self();
                }
                return self::$_instance;
            }
    
            //查询单挑记录
            public function getRow($sql, $type = MYSQLI_ASSOC) {
                $result = $this->query($sql);
                return mysqli_fetch_array($result, $type);
            }
    
            /**
            * 多行记录
            */
            public function getRows($sql, $type = MYSQLI_ASSOC) {
                $result = $this->query($sql);
                while ($row = mysqli_fetch_array($result, $type)) {
                $this->rows[] = $row;
                }
                return $this->rows;
            }
    
            //插入数据
            public function insert($table,$data)
            {
                $str = '';
                $str .= "INSERT INTO `$table`";
                $str .= "(`".implode("`,`",array_keys($data))."`)";
                $str .= " VALUES ";
                $str .= "('".implode("','",$data)."')";
                $result = $this->query($str);
                if ($result && mysqli_affected_rows($this->link)>0) {
                    return mysqli_insert_id($this->link);
                }else{
                    return false;
                }
            }
    
            //插入数据
            public function update($table,$data,$where)
            {
                if (!$where) {
                    die('条件不能为空');
                }
                $str = '';
                $str .= "UPDATE `$table` SET ";
                foreach ($data as $key => $value) {
                    $str .='`'.$key.'`="'.$value.'",';
                }
                
                $str = rtrim($str,',');
                $str .= ' where '.$where;
                $result = $this->query($str);
                if ($result && mysqli_affected_rows($this->link)>0) {
                    return mysqli_affected_rows($this->link);
                }else{
                    return false;
                }
            }
            
            //删除数据
            public function delete($table,$where)
            {
                if (!$where) {
                    die('条件不能为空');
                }
                $str = "DELETE FROM `$table` WHERE $where ";
                $result = $this->query($str);
                if ($result && mysqli_affected_rows($this->link)>0) {
                    return mysqli_affected_rows($this->link);
                }else{
                    return false;
                }
            }            
    
        }
    
    
        
  • 相关阅读:
    Mvc分页:为IQueryable定义一个扩展方法,直接反回PagedList<T>结果集
    从零开始一起学习SLAM | 相机成像模型
    从零开始一起学习SLAM | 为啥需要李群与李代数?
    从零开始一起学习SLAM | 三维空间刚体的旋转
    从零开始一起学习SLAM | 为什么要用齐次坐标?
    从零开始一起学习SLAM | C++新特性要不要学?
    从零开始一起学习SLAM | SLAM有什么用?
    从零开始一起学习SLAM | 学习SLAM到底需要学什么?
    2019年度【计算机视觉&机器学习&人工智能】国际重要会议汇总
    从零开始一起学习SLAM | 为什么要学SLAM?
  • 原文地址:https://www.cnblogs.com/burningc/p/9413440.html
Copyright © 2011-2022 走看看