Content

php实现pdo数据库操作类过程详解(php查询数据库并输出实例)快来看

文章摘要

这篇文章介绍了一个PHP类`Db`,用于处理数据库连接和操作。类内包含以下主要内容: 1. **数据库配置**:定义了数据库连接参数,如数据库类型、主机、端口、用户名、密码、字符集和默认数据库。 2. **单例模式**:通过静态方法`getInstance`实现,允许单个实例被多个程序调用,确保数据库连接只发生一次。 3. **数据库连接**:通过`connect()`方法尝试连接数据库,失败时抛出错误。 4. **SQL操作**:提供了`exec()`、`fetch()`和`fetchAll()`方法,用于执行SQL语句并处理返回数据。 5. **主键管理**:`insertId`属性用于管理主键插入后的唯一性。 文章重点突出`Db`类如何通过单例模式管理数据库连接,并提供基本的SQL操作功能。

<?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; private function __construct($params=[]) { // 初始化连接参数 $this->dbConfig=array_merge($this->dbConfig,$params); // 连接数据库 $this->connect(); } private function __clone() { // TODO:Implement __clone() method. } 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()); } } 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(); // 获取最后操作错误信息的数组 var_dump($error); } } // 获取单条查询结果 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); } } ?>