<?php class Model{ protected $tableName=''; protected $pdo = ''; function __construct($tableName=''){ if(!empty($tableName)){ $this->tableName = $tableName; } //實例化PDO $pdo = new PDO('mysql:host=localhost;dbname=company','root','root'); $pdo->exec('set names utf8'); $this->pdo = $pdo; } //表添加記錄 public function add($arr){ //產生sql語句 $sqlFieldStr = ''; $sqlParamStr = ''; $i = 0; foreach($arr as $k=>$v){ $sqlFieldStr .= ','.$k; $sqlParamStr .= ',:p'.$i; $i++; } $sqlFieldStr = substr($sqlFieldStr,1); $sqlParamStr = substr($sqlParamStr,1); $sql = "INSERT INTO {$this->tableName}({$sqlFieldStr}) VALUES({$sqlParamStr})"; //準備執行 $this->pdo->prepare('INSERT INTO news(title,content) values(:p0,:p1) $pdoStatement = $this->pdo->prepare($sql); //綁定數據 $i = 0; foreach($arr as $v){ $varName = 'var'.$i; $$varName = $v; if(is_int($v)){ $pdoStatement->bindParam(':p'.$i,$$varName,PDO::PARAM_INT); }else{ $pdoStatement->bindParam(':p'.$i,$$varName,PDO::PARAM_STR); } $i++; } //執行 $re = $pdoStatement->execute(); return $re; } //獲取最後插入的記錄的主鍵ID public function getPrimaryKey(){ return $this->pdo->LastInsertId(); } //刪除 public function delete($where ,$params){ //delete from news where id=:id $where = empty($where) ? '' : 'WHERE ' .$where; $sql = "DELETE FROM {$this->tableName} {$where}"; $pdoStatement = $this->pdo->prepare($sql); //綁定數據 $i = 0; foreach($params as $k=>$v){ $varName = 'var'.$i; $$varName = $v; if(is_int($v)){ $pdoStatement->bindParam($k,$$varName,PDO::PARAM_INT); }else{ $pdoStatement->bindParam($k,$$varName,PDO::PARAM_STR); } } //執行 $re = $pdoStatement->execute(); return $re; } //更新數據 public function update($arr,$where="",$params=array()){ $where = empty($where) ? '' : 'WHERE '.$where; //拼寫sql語句:UPDATE news SET 字段名=:p0,字段名=:p1,... WHERE id=:id; $i = 0; $setStr = ''; foreach($arr as $k=>$v){ $setStr .= ','.$k.'=:p'.$i; $i++; } $setStr = substr($setStr, 1); $sql = "UPDATE {$this->tableName} SET {$setStr} {$where}"; //預處理一條sql語句 $pdoStatement = $this->pdo->prepare($sql); //綁定數據 $i = 0; foreach($arr as $v){ //使用一個動態變量,防止$v被覆蓋; $varName = 'var'.$i; $$varName = $v; if(is_int($v)){ $pdoStatement->bindParam(':p'.$i,$$varName,PDO::PARAM_INT); }else{ $pdoStatement->bindParam(':p'.$i,$$varName,PDO::PARAM_STR); } $i++; } //綁定where條件中的數據 where id=:id array(':id'=>$id) foreach($params as $k=>$v){ $varName = 'var'.$i; $$varName = $v; if(is_int($v)){ $pdoStatement->bindParam($k,$$varName,PDO::PARAM_INT); }else{ $pdoStatement->bindParam($k,$$varName,PDO::PARAM_STR); } $i++; } //執行 return $pdoStatement->execute(); } //查詢操做 public function select($fields='*',$where='',$limit='',$order='',$params=array()){ $where = empty($where) ? '' : 'WHERE '.$where; $limit = empty($limit) ? '' : 'LIMIT '.$limit; $order = empty($order) ? '' : 'ORDER BY '.$order; //預處理sql語句 SELECT * FROM tablename .... $sql = "SELECT {$fields} FROM {$this->tableName} $where $order $limit"; $pdoStatement = $this->pdo->prepare($sql); //綁定數據 $i = 0; foreach($params as $k=>$v){ $varName = 'var'.$i; $$varName = $v; if(is_int($v)){ $pdoStatement->bindParam($k,$$varName,PDO::PARAM_INT); }else{ $pdoStatement->bindParam($k,$$varName,PDO::PARAM_STR); } $i++; } //執行 $re = $pdoStatement->execute(); if($re){ //返回結果集 return $pdoStatement->fetchAll(PDO::FETCH_ASSOC); }else{ return array(); } } }