1 <?php 2 class six{ 3 //定義私有靜態變量存儲 實例化對象 4 private static $ob; 5 //定義表名 6 private $table; 7 //定義條件 8 private $where; 9 //定義公共pdo變量用於存儲 連接數據庫配置實例 10 public $pdo; 11 //定義私有最終構造方法 防止 繼承 子類重寫 ;防止直接實例化對象 12 private function __construct() 13 { 14 $this->pdo = new PDO("mysql:host=127.0.0.1;dbname=blog","root","root"); 15 16 } 17 //定義私有克隆 防止類外克隆 18 private function __clone() 19 { 20 echo "no1"; 21 } 22 //私有靜態方法 用於實例化類對象 23 public static function gits(){ 24 //判斷若是靜態屬性中是否有類對象 若是沒有則 實例化該類 賦予 靜態屬性 25 //如此便開闢了一塊靜態空間用來存儲實例化對象 類外只需調用一次便可 節省了資源 26 // 實現了單例模式的做用 27 if (!(self::$ob instanceof self)){ 28 29 self::$ob = new self(); 30 31 } 32 33 return self::$ob; 34 35 } 36 37 //單刪 批刪封裝 38 public function deleteAll($id){ 39 //判斷$id 是否有值 40 if (empty($id)){ 41 42 return false; 43 } 44 //取數組中 values值 45 $key = array_values($id); 46 //取得健爲零值爲要刪除數據值的一維數組 47 @$num = count($key[0]); 48 //循環 數組$id 49 foreach ($id as $k => $v){ 50 //$str = 數據庫主鍵id字段 51 $str = $k; 52 // idss = 要刪除的數據id 53 $idss = $v; 54 55 } 56 $ids = ' where '; 57 //判斷 若是要刪除的數據爲數組並大於一條 則拼接爲 id in (11,12,13)形式 58 if (is_array($id) && $num > 1){ 59 60 $ids .= $str ." in " . '('.implode(",",$idss) .')'; 61 //數組等於1條(這個count)值是判斷 要刪除的數據個數爲1 62 //拼接成 id=1 的形式 63 }else if (is_array($id) && count($id) == 1){ 64 65 $ids .= $str . ' = ' . $idss ; 66 67 } 68 //返回 實現單刪多刪 69 return $this->pdo->exec("delete from $this->table $ids"); 70 } 71 72 //修改 73 74 public function update($data){ 75 76 $str = ''; 77 //循環數組拼接成 id=1,name=小明的形式 78 foreach ($data as $k => $v){ 79 80 $str .= "," . $k .'='. "'$v'"; 81 } 82 $str = substr($str,1); 83 84 //返回數組實現修改 85 return $this->pdo->exec("update $this->table set $str $this->where"); 86 87 } 88 89 //定義傳入的表名 90 public function tables($table){ 91 92 $this->table = $table; 93 return $this; 94 95 } 96 97 public function where($where){ 98 99 if (empty($where)){ 100 101 return false; 102 } 103 $str = ' where '; 104 if (is_array($where)){ 105 106 foreach ($where as $k => $v){ 107 108 $str .= $k .' = '. "'$v'" . ' and '; 109 } 110 $str = rtrim($str,' and '); 111 112 }else{ 113 114 $str .= $where; 115 116 } 117 return $this->where = $str; 118 119 } 120 121 //單挑查詢 122 public function get(){ 123 124 return $this->pdo->query("select * from $this->table $this->where")->fetch(PDO::FETCH_ASSOC); 125 126 } 127 128 //添加處理數據 129 public function insert($data){ 130 //找到key 循環遍歷成 id,name,sex 的形式 131 $keyArr = array_keys($data); 132 $str = ''; 133 foreach ($keyArr as $k => $v){ 134 135 $str .= "," . $v; 136 } 137 $str = substr($str,1); 138 //找到 value 遍歷成 '1','小明','男' 的形式 139 $valArr = array_values($data); 140 $strs = ''; 141 foreach ($valArr as $kk => $vv){ 142 $strs .= "," . "'$vv'"; 143 } 144 $strs = substr($strs,1); 145 146 // 執行則添加成功 147 return $this->pdo->exec("insert into $this->table ($str) values ($strs)"); 148 149 } 150 151 } 152 153 $ob = six::gits(); 154 155 //單查詢 156 //$ob->tables('student')->where(['s_id'=>'08','s_name'=>'王菊']); 157 //$data = $ob->get(); 158 //添加 159 //$data = $ob->tables('student')->insert(['s_id'=>'14','s_name'=>'趙雷','s_birth'=>'1990-01-01','s_sex'=>'男']); 160 //刪除(單刪 批刪) 161 //$data = $ob->tables('student')->deleteAll(['s_id'=>14]); 162 //修改 163 $ob->tables('student')->where(['s_id'=>'08']); 164 $data = $ob->update(['s_name'=>'李雲','s_sex'=>'男']); 165 166 var_dump($data);