数据库Db类的创建
<?php /** * 数据库的基本操作 */ class Db { //数据库的默认连接参数 private $dbConfig = [ 'db' => 'mysql', //数据库类型 'host' => 'localhost', //主机名称 'port' => '3306', //默认端口 'user' => 'root', //用户名 'pass' => 'root', //密码 'charset' => 'utf8', //默认字符集 'dbname' => 'edu', //默认数据库 ]; //新增主键id public $insertId = null; //受影响的记录数量 public $num = 0; //单例模式,本类的实例 private static $instance = null; //数据库的连接 private $conn = null; /** * Db 构造方法 * 私有化以防止外部实例化. * @param $params */ private function __construct($params) { //初始化连接参数 $this->dbConfig = array_merge($this->dbConfig, $params); //连接数据库 $this->connect(); } /** * 禁止外部克隆该实例 */ private function __clone() { // TODO: Implement __clone() method. } /** * @return Db|null * 获取当前类的单一实例 */ public static function getInstance($params=[]) { if (!self::$instance instanceof self) { self::$instance = new self($params); } return self::$instance; } /** * 数据库的连接 */ private function connect() { try{ //配置数据源DSN $dsn = "{$this->dbConfig['db']}:host={$this->dbConfig['host']}; port={$this->dbConfig['port']};dbname={$this->dbConfig['dbname']}; charset={$this->dbConfig['charset']}"; //创建PDO对象 $this->conn = new PDO($dsn,$this->dbConfig['user'],$this->dbConfig['pass']); //设置客户端的默认字符集 $this->conn->query("SET NAMES {$this->dbConfig['charset']}"); }catch (PDOException $e){ die('数据库连接失败'.$e->getMessage()); } } //完成数据表的写操作:新增,更新,删除 //返回受影响的记录,如果新增还返回新增主键id public function exec($sql) { $num = $this->conn->exec($sql); //如果有受影响的记录 if($num > 0){ //如果是新增操作,初始化新增主键id属性 if(null !==$this->conn->lastInsertId()){ $this->insertId = $this->conn->lastInsertId(); } $this->num = $num; //返回受影响的记录数量 }else { $error = $this->conn->errorInfo(); //获取最后操作的错误信息的数组 //[0]错误标识符[1]错误代码[2]错误信息 print '操作失败'.$error[0].':'.$error[1].':'.$error[2]; } } //获取单条查询结果 public function fetch($sql) { return $this->conn->query($sql)->fetch(PDO::FETCH_ASSOC); } //获取多条查询结果 public function fetchAll($sql) { return $this->conn->query($sql)->fetchAll(PDO::FETCH_ASSOC); } }
//Db类测试
<?php //Db类测试 require 'Db.php'; $db = Db::getInstance(); //获取db类实例 //更新 //$sql = "UPDATE student SET email='wx' WHERE id=2"; //$db->exec($sql); //新增 //$sql = "INSERT student SET name='马云',email='taobao'"; //$db->exec($sql); //echo $db->num; //查询 $sql = "SELECT id,name,email FROM student WHERE id>0"; $row = $db->fetchAll($sql); print_r($row);