简单的单利模式封装数据库

<?php
include"config.php";
//定义一个接口
interface DbMysql{
    public function table($tableName);
    //增加 arr为传入的数组
    public function insert($arr);
    //修改
    public function up($table,$arr,$where=1);
    //删除
    public function delete($table,$where=1);
    //执行sql语句
    public function query($sql);
    //获取一个字段
    public function getOne($name,$table,$where=1);
    //获取所有数据
    public function getAll($sql);
    //获取新增id
    public function getLastInsertId();
    //获取单条数据
    public function Row($sql);
    //查询的方法
    public function select($columns, $join = null, $where = null, $group = null, $having = null, $order = null, $limit = null);
}
//工厂方法
interface Factory{
    function createDB();
}
//实现接口
class mysqldb implements DbMysql{
    // 表名
    protected $table;
    // 数据库对象
    protected $pdo;
    protected $host;
    protected $user;
    protected $pwd;
    protected $db;
    protected $type;
    //私有的静态属性
    private static $dbcont=false;
    //私有的构造方法
    private function __construct(){
        global $library;
        $this->host=$library['host'];
        $this->user=$library['user'];
        $this->pwd=$library['pwd'];
        $this->db=$library['db'];
        $this->type=$library['type'];
        $this->pdo=new PDO("$this->type:host=$this->host;dbname=$this->db","$this->user","$this->pwd");
        if($this->pdo->errorInfo()){
            return '数据库连接失败';
        }
        $this->pdo->exec('set names utf8');
        return $this->pdo;

    }
    //私有的克隆方法
    private function __clone(){}
    //共有的静态方法
    public static function getInstance(){
        if(self::$dbcont===false){
            self::$dbcont=new self;
        }
        return self::$dbcont;
    }

    public function table($tableName){
        $this->table = $tableName;
        return $this;
    }
    //封装query查询方法
    public function query($sql){
        return $this->pdo->exec($sql);
    }

    //封装获取刚刚插入的SQL语句的ID

    public function getLastInsertId(){
        return $this->pdo->lastInsertId();
    }

    //封装增的SQL语句

    public function insert($arr){
        $str1="";
        $str2="";
        foreach($arr as $v=>$k){
            $str1.=$v.',';
            $str2.="'$k'".',';
        }
        $str1=trim($str1,','); //把去掉最后一个逗号的值放回去
        $str2=trim($str2,',');
        $sql="insert into $this->table($str1)VALUES ($str2)";
        $this->pdo->exec($sql);
        return $this->pdo->lastInsertId();

    }
    //封装getAll() 查所有数据

    public function getAll($sql){

        return $this->pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);

    }

    //封装getOne() 查某一个字段 第一个参数字段名 第二个参数表名 第三个参数条件
    public function getOne($name,$table,$where=1){

        return $this->pdo->query("select $name from $table WHERE $where")->fetchAll(PDO::FETCH_ASSOC);

    }

    //封装getRow() 查一条数据
    public function Row($sql){

        return $this->pdo->query($sql)->fetch(PDO::FETCH_ASSOC);

    }

    //封装删除的SQL语句
    public function delete($table,$where=1){
        $sql="delete from $table WHERE $where";
        return $this->pdo->exec($sql);
    }

    //封装修改的SQL语句
    public function up($table,$arr,$where=1){
        $str="";
        foreach($arr as $v=>$k){
            $str.=$v."='$k',";
        }
        $str1=trim($str,',');
        $sql="update $table set $str1 WHERE $where";
        return $this->pdo->exec($sql);
    }

    public function select($columns, $join = null, $where = null, $group = null, $having = null, $order = null, $limit = null){
        $columns = implode(',', array_values($columns));
        // 需要加条件判断是否为空,是否需要拼接
        $sql = "select ".$columns." from `".$this->table."` ";
        if($join!=null){
            $sql .= $join;
        }
        if($where!=null){
            $sql .= " where ".$where;
        }
        if($group!=null){
            $sql .= " group by ".$group;
        }
        if($having!=null){
            $sql .= " having ".$having;
        }
        if($order!=null){
            $sql .= " order by ".$order;
        }
        if($limit!=null){
            $sql .= " limit ".$limit;
        }

        echo $sql;exit;
        $res = $this->query($sql)->getAll();
        return $res;
    }


}
//实现接口
class mysql implements Factory{

    public function createDB(){

        return mysqldb::getInstance();
    }

}


//测试
$db= new mysql;
$sql="select * from essay";
$arr=$db->createDB()->getAll($sql);
var_dump($arr);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值