PHP資料庫類

來源:互聯網
上載者:User

標籤:錯誤   name   執行sql   username   statement   eof   儲存   外部   失敗   

<?phpclass Db{ //私人靜態屬性儲存執行個體化對象自身 private static $instance; //儲存PDO類的執行個體化 private $pdo; //PDOStatement類 private $stmt; //禁止外部執行個體化對象,連結資料庫 private function __construct($config,$port,$charset){ try{ $this->pdo = new PDO(‘mysql:host=‘.$config[‘host‘].‘;dbname=‘.$config[‘dbname‘].‘;charset=‘.$charset.‘;port=‘.$port.‘‘,$config[‘user‘],$config[‘password‘]); //開始交易回復的錯誤警告 $this->pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); }catch(PDOException $e){ echo ‘msyql error: ‘.$e->getMessage(); } } //外部執行個體化 public static function getInstance($config,$port=3306,$charset=‘utf8‘){ if(!self::$instance instanceof Db){ self::$instance = new self($config,$port,$charset); } return self::$instance; } //插入資料 public function insertData($table,$data){ //拼接插入的資料庫欄位名 $columns = implode(‘,‘,array_keys($data)); //憑藉插入的資料 $values = ‘:‘.implode(‘,:‘,array_keys($data)); $sql = "insert into $table ($columns) values ($values)"; //處理date資料格式 $newdata = $this->doData($data); //預先處理sql,執行添加資料操作 $this->doSql($sql,$newdata); //成功執行後返回插入資料的id,失敗返回錯誤資訊 if($this->stmt->errorCode()==00000){ return $this->pdo->lastInsertId(); }else{ return $this->stmt->errorInfo()[2]; } } //更新資料 public function updateData($table,$data,$where){ //檢查需要更新的資料是否存在 if(!$this->getOne($table,array_keys($data)[0],$where)){ echo ‘需要更新的資料不存在‘; return false; } //檢查傳入的資料並且拼接成字串 if(is_array($data)){ $columns = ‘‘; foreach($data as $k=>$v){ $columns.= $k.‘=:‘.$k.‘,‘; } $columns=rtrim($columns,‘,‘); } //sql語句 $sql = "UPDATE $table SET $columns WHERE ".$where; //傳入的數組處理成pdo定的資料格式[‘:user_name‘=>‘lisi‘,‘:user_age‘=>39] $newdata = $this->doData($data); //預先處理sql,執行添加資料操作 $this->doSql($sql,$newdata); //沒有錯誤返回1,有錯誤返回錯誤資訊 if($this->stmt->errorCode()==00000){ return 1; }else{ return $this->stmt->errorInfo()[2]; } } //查詢一條資料 public function getOne($table,$fields,$where){ //檢查傳入的欄位是否是數組 if(is_array($fields)){ if(count($fields)>1){ $columns=implode(‘,‘,$fields); }else{ $columns=$fields[0]; } }else{ $columns = $fields; } //查詢語句 $sql = "SELECT $columns FROM $table WHERE ".$where.‘ LIMIT 1‘; //預先處理sql,執行添加資料操作 $this->doSql($sql); //獲得查詢的結果集 $res = $this->stmt->fetch(PDO::FETCH_ASSOC); //如果沒有錯誤則返回查詢的結果集,否則返回錯誤資訊 if($this->stmt->errorCode()==00000){ return $res; }else{ return $this->stmt->errorInfo()[2]; } } //查詢多條資料 public function getAll($table,$fields,$where=1){ //檢查傳入的欄位是否是數組 if(is_array($fields)){ if(count($fields)>1){ $columns=implode(‘,‘,$fields); }else{ $columns=$fields[0]; } }else{ $columns = $fields; } //查詢語句 $sql = "SELECT $columns FROM $table WHERE ".$where; //預先處理sql,執行添加資料操作 $this->doSql($sql); //獲得查詢的結果集 $res = $this->stmt->fetchALL(PDO::FETCH_ASSOC); //如果沒有錯誤則返回查詢的結果集,否則返回錯誤資訊 if($this->stmt->errorCode()==00000){ return $res; }else{ return $this->stmt->errorInfo()[2]; } } //刪除資料 public function delData($table,$where){ //檢查需要更新的資料是否存在 if(!$this->getOne($table,[‘*‘],$where)){ echo ‘需要刪除的資料不存在‘; return false; } if(!$where){ echo ‘請添加刪除條件‘; return false; } $sql = "DELETE FROM $table WHERE ".$where; //預先處理sql,執行添加資料操作 $this->doSql($sql); //如果沒有錯誤則返回查詢的結果集,否則返回錯誤資訊 if($this->stmt->errorCode()==00000){ return 1; }else{ return $this->stmt->errorInfo()[2]; } } //處理傳入的資料 private function doData($data){ foreach($data as $k=>$v){ $newk = ‘:‘.$k; $newdata[$newk]=$v; } return $newdata; } //執行sql操作 function doSql($sql,$data=null){ //預先處理sql $this->stmt=$this->pdo->prepare($sql); //執行添加資料操作 $this->stmt->execute($data); } //禁止外部複製 private function __clone(){}}$config = [‘host‘=>‘127.0.0.1‘,‘dbname‘=>‘shop‘,‘user‘=>‘root‘,‘password‘=>‘root‘];$db = Db::getInstance($config,3306,‘utf8‘);//插入資料$table= ‘user‘;$data=[‘user_name‘=>‘sunliang‘,‘user_age‘=>28,‘sex‘=>1,‘email‘=>‘[email protected]‘,‘password‘=>md5(123456),‘money‘=>544545.34];echo $db->insertData($table,$data);// $sql = ‘insert into (username,password) values (:username,password)‘;// $stmt = $db->prepare($sql);// $data = [‘:username‘=>‘lisi‘,‘:password‘=>123456];// $stmt->execute($data);//修改資料// $table = ‘user‘;// $data=[‘user_name‘=>‘sunliang‘,‘user_age‘=>28,‘email‘=>‘[email protected]‘];// $sql = "update user set user_name=:username,user_age=:user_age,email=:email where id = 1";// echo $db->updateData($table,$data,‘id=18‘);// $stmt = $db->prepare($sql);// $stmt->execute($data);//查詢一條資料// $table = ‘user‘;// $fields= [‘user_name‘,‘id‘];// $sql = ‘select user_name,email from user where id = 1‘;// print_r($db->getOne($table,$fields,‘id=2‘));//查詢多條資料// $table = ‘user‘;// $fields= [‘user_name‘,‘id‘];// $sql = ‘select user_name,email from user where id = 1‘;// print_r($db->getAll($table,$fields));//刪除資料// $table = ‘user‘;// echo $db->delData($table,‘id=16‘);

簡單的資料庫類

PHP資料庫類

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.