码迷,mamicode.com
首页 > 数据库 > 详细

PHP数据库类

时间:2018-08-01 15:59:22      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:错误   name   执行sql   username   statement   eof   存储   外部   失败   

<?php class 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‘=>‘323424958@126.com‘,‘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‘=>‘323424958@qq.com‘]; // $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数据库类

标签:错误   name   执行sql   username   statement   eof   存储   外部   失败   

原文地址:http://blog.51cto.com/woaijorden/2153207

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!