美文网首页PHP高级技能
php数据库单例类链式操作

php数据库单例类链式操作

作者: AISpider | 来源:发表于2018-02-27 16:48 被阅读20次

直接上代码:

<?php 
/**
* 数据库连接类 mysqli连接模式
*/
class DB
{
    static public $instance;
    private $sql=array(
            "field"=>" * ",
            "from"=>"",
            "where"=>"",
            "order"=>"",
            "limit"=>"");
    //初始化 防止new 继承。
    private function __construct($tab_name="") 
    {
        $this->test='13213';
        $this->debug=true;
        $this->connect_db();
    }
    // 连接数据库 静态,安全
    private function connect_db()
    {
        $this->connect = mysqli_connect('127.0.0.1','root','','usite') or die('The database connection is failed:'.mysqli_connect_error());
        $this->db_log('The database connection is successful');
    }
    
    // static  public为提供外部静态访问,
    static public function instance()
    {
        if (!self::$instance) {
            self::$instance=new self;
        }
        return self::$instance;
    }

    // 内部输出
    private function db_log($log)
    {
        if ($this->debug) {
            echo $log;
        }
    }

    //获取最近执行的sql语句
    public function get_sql()
    {   
        if ($this->sql) {
            return $this->sql;
        }
        else{
            return false;
        }
    }

    public function field($field="*")
    {
        $this->sql['field']=' '.$field;
        return $this;    
    }

    public function from($table_name)
    {
        
        
        if (isset($this->sql['from'])) {
            $this->sql['from']='FROM '.$table_name;
        }
        return $this;
    }

    // 目前参数为数组,只支持条件为and,如果需要where的,请使用字符代替。
    public function where($map)
    {
        if (!$map) {
            return $this;
        }
        elseif (is_array($map)) {
            $where_str=" ";
            foreach ($map as $key => $row) {
                $where_str=$where_str.'`'.$key.'`="'.$row.'" and ';
            }
            $where_str=$where_str.'1';
            $this->sql['where']='WHERE '.$where_str;
        }
        else{
            $this->sql['where']='WHERE '.$map;
        }
        return $this;
    }

    public function order($order)
    {
        $this->sql['order']='ORDER BY '.$order;
        return $this;
    }

    public function limit($limit)
    {
        $this->sql['limit']='LIMIT '.$limit;
        return $this;
    }

    public function get_one()
    {
        $sql="SELECT * FROM us_user limit 0,1";
        if ($result=mysqli_query($this->connect,$sql)){
            $row=mysqli_fetch_assoc($result);
            return $row;
        }
        else{
            return false;
        }
    }
    // 查询结果集
    public function query($sql)
    {
        # code...
    }

    public function select()
    {
        $this->sql= "SELECT ".(implode(" ",$this->sql));
    }
}

function M($table_name)
{
    $db=DB::instance(); //正确
    return $db->from($table_name);
}
$map=array();
$map['id']=1;
$map['user_name']="zhangsan";
echo "<hr />";
$res=M('us_user')->field('id')->where($map)->order('id desc')->limit('0,1')->select();
echo M('us_user')->get_sql();

执行结果:

SELECT id FROM us_user WHERE `id`="1" and `user_name`="zhangsan" and 1 ORDER BY id desc LIMIT 0,1

相关文章

  • php数据库单例类链式操作

    直接上代码: 执行结果:

  • 简单的设计模式

    设计模式 单例模式 这个类只能创建一个对象。 php的应用主要在于数据库应用,一个应用中会存在大量的数据库操作,使...

  • koa框架(二)

    一、继承 1.实现单例 二、封装Koa操作Mongodb数据库的DB类库 1.多次实例化解决办法:单例 //解决多...

  • php链式操作的实现

    php链式操作的关键是在做完操作后要return $this; 一、不使用__call方法实现链式操作

  • 单例模式链接数据库

    //db.php /** * 单例链接数据库 * */ classDb { static private$_ins...

  • Curl 在 Swoole 协程中的解决方案

    使用YurunHttp扩展 YurunHttp 是开源的PHP HTTP类库,支持链式操作,简单易用。 支持所有常...

  • PDO

    PDO就是PHP Data Object的简称。PDO主要用来代替数据库操作类。PHP同时可以操作多个数据库。例如...

  • PHP 链式操作

    下面就是一个链式操作MYSQL数据库类。 最常见的链式操作 每一个方法操作之后,返回一个对象,直到最后一个方法才是...

  • OC操作数据库的单例

    启动app时,立刻打开数据库 操作数据库的单例SQLiteManager

  • JAVA从零开始实现数据结构九:链栈

    链式栈类似于单链表操作,只需要记录top指针即可完整的MyLinkedStack类 测试类 测试结果

网友评论

    本文标题:php数据库单例类链式操作

    本文链接:https://www.haomeiwen.com/subject/esemxftx.html