1. 程式人生 > >單例模式寫MySQL model類,簡單的增、刪、改、查

單例模式寫MySQL model類,簡單的增、刪、改、查

單例模式的用途,可用於資料庫操作

<?php

Class Db
{
    static private  $whe;//條件
    static private $tab;//表名
    static private $lim;//分段變數
    static private $order_by;//排序
    private $str_key = array();//新增資料的鍵
    private $str_val = array();//新增資料的值
    private $key_val = array();//修改的資料
    //防止外部例項物件
    private function
__construct(){} //防止克隆 private function __clone(){} //唯一一個例項物件 static public $new_obj; static public function table($t) { if (!self::$new_obj) { self::$new_obj = new Db; } self::$tab=$t; return self::$new_obj; } //連結資料庫 public
function mysql_connect() { $mysql_conf = array( 'host'=>'127.0.0.1:3306',//連線地址 'db'=>'test',//庫名 'db_user'=>'root',//賬號 'db_pwd'=>'root'//密碼 ); return new MySQLi($mysql_conf['host'] , $mysql_conf['db_user'], $mysql_conf['db_pwd'] ,$mysql_conf
['db']);//建立一個mysqli物件 } //條件 public function where($cond) { if (isset($cond)) { self::$whe = ' where '.$cond; } return $this; } //分頁 public function limit($l) { if (isset($l)) { self::$lim = ' limit '.$l; } return $this; } //排序 public function order($odr) { self::$order_by = ' order by '. $odr; return $this; } //查詢語句 public function sql_select() { //準備一條SQL語句 return "select * from ".self::$tab.self::$order_by.self::$whe; } //查詢多條語句 public function select() { $reslut = mysqli_query($this->mysql_connect(),$this->sql_select().self::$lim);//也可以這麼寫:$this->mysql_connect()->query($this->sql_select().self::$lim); $attr = $reslut->fetch_all(MYSQL_ASSOC);//MYSQL_ASSOC帶資料庫索引 MYSQL_NUM數值維索引 MYSQL_BOTH數值索引、資料庫索引都有 return $attr; } //查詢單條語句 public function find() { $reslut = $this->mysql_connect()->query($this->sql_select()); $attr = $reslut->fetch_row(MYSQL_ASSOC); return $attr; } //新增或修改欄位 public function data(Array $data) { if (!empty($data)) { foreach ($data as $key => $value) { //新增的資料 $this->str_key[] = $key; $this->str_val[] = $value; //修改的資料 $this->key_val[] = is_string($value) ? $key.'= "'.$value.'"' : $key.'='.$value; } return $this; } } //新增欄位 public function insert() { if (!isset($this->str_key) or !isset($this->str_val)) { return 'error'; }else{ $key = implode(',', $this->str_key); $val = implode(',', $this->str_val); $mysql_content = 'insert into '.self::$tab.' ('.$key.') values('.$val.')'; $reslut =$this->mysql_connect()->query($mysql_content); return $reslut; } } //修改欄位 public function update() { if (!$this->key_val) { return 'error'; }else{ $k_v = implode(', ',$this->key_val); $mysql_content = 'update '.self::$tab.' set '.$k_v.' '.self::$whe; $reslut =$this->mysql_connect()->query($mysql_content); return $reslut; } } //刪除欄位 public function delete() { $mysql_content = 'delete from '.self::$tab.self::$whe; $reslut =$this->mysql_connect()->query($mysql_content); return $reslut; } } ?>

下面是呼叫這個類

<?php 
@include('./model.php');
//單條查詢
 $test = Db::table('test')->where('id=3')->find();
 var_dump($test);
//分頁查詢
// $test1 = Db::table('test')->limit('0,2')->select();
// var_dump($test1);
//多條查詢
// $test2 = Db::table('test')->order('id asc')->select();
// var_dump($test2);
//新增
// $test3 = Db::table('test')->data(['i'=>3,'age'=>6,'sex'=>9])->insert();
// var_dump($test3);
// 修改
// $test4 = Db::table('test')->where('id=30')->data(['IDinfo'=>789,'newid'=>456])->update();
// var_dump($test4);
// 刪除
// $test5 = Db::table('test')->where('id>11')->delete();
// var_dump($test5);
?>