PHP实现MySQL数据库操作类分享

在Web开发中,数据库操作是核心环节之一,PHP作为一种广泛使用的服务器端脚本语言,提供了多种与MySQL数据库交互的方式,为了提高代码复用性和可维护性,开发者通常会封装一个数据库操作类,本文将分享一个基于PHP的MySQL数据库操作类,涵盖连接、查询、增删改查等常用功能,并附上相关FAQs。
数据库操作类的核心功能
一个完整的数据库操作类应具备以下功能:
- 数据库连接:支持单例模式,避免重复连接。
- 执行SQL语句:包括查询、插入、更新和删除操作。
- 结果处理:返回数组或对象形式的数据。
- 事务支持:确保数据一致性。
- 错误处理:捕获并记录异常信息。
连接与初始化
类需要通过构造函数或静态方法初始化数据库连接,使用PDO(PHP Data Objects)扩展可以增强兼容性和安全性。
private $pdo;
private static $instance;
private function __construct($host, $dbname, $username, $password) {
$dsn = "mysql:host=$host;dbname=$dbname;charset=utf8";
$this->pdo = new PDO($dsn, $username, $password);
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
public static function getInstance($host, $dbname, $username, $password) {
if (!self::$instance) {
self::$instance = new self($host, $dbname, $username, $password);
}
return self::$instance;
}
执行SQL语句
通过封装query和exec方法,分别处理查询和写入操作:

public function query($sql, $params = []) {
$stmt = $this->pdo->prepare($sql);
$stmt->execute($params);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
public function exec($sql, $params = []) {
$stmt = $this->pdo->prepare($sql);
return $stmt->execute($params);
}
事务处理
事务确保一组操作要么全部成功,要么全部失败:
public function beginTransaction() {
$this->pdo->beginTransaction();
}
public function commit() {
$this->pdo->commit();
}
public function rollback() {
$this->pdo->rollBack();
}
错误处理
使用PDO的异常捕获机制,记录错误日志:
try {
$db = Database::getInstance('localhost', 'test', 'root', 'password');
$result = $db->query("SELECT * FROM users WHERE id = ?", [1]);
} catch (PDOException $e) {
error_log("Database error: " . $e->getMessage());
}
通过封装MySQL数据库操作类,可以显著提升代码的可读性和可维护性,PDO的使用增强了安全性,而单例模式则优化了资源管理,开发者可根据实际需求扩展功能,如添加连接池支持或日志记录。
相关FAQs
Q1:为什么推荐使用PDO而不是MySQLi?
A1:PDO支持多种数据库(如MySQL、PostgreSQL、SQLite),而MySQLi仅限于MySQL,PDO的预处理语句语法更统一,适合跨项目开发。

Q2:如何防止SQL注入?
A2:始终使用预处理语句(prepare和execute)传递参数,避免直接拼接SQL字符串,对用户输入进行过滤和验证,确保数据安全性。