ezrarieben / pdo-wrapper-singleton
遵循单例模式编写的PDO MySQL数据库连接包装类
1.0.0
2024-02-11 19:42 UTC
Requires
- php: >=8.1.0
README
一个遵循单例模式的PDO MySQL数据库连接的PHP包装类。
目录
安装
要在项目中使用包装器,请通过composer将其添加为依赖项
composer require ezrarieben/pdo-wrapper-singleton
基本示例
use \ezrarieben\PdoWrapperSingleton\Database; Database::setHost("localhost"); Database::setUser("user"); Database::setPassword("123456"); Database::setDbName("foobar"); try { $query = "SELECT * FROM `cars` WHERE `color` = ?"; $stmt = Database::run($query, ['red']); $row = $stmt->fetch(); } catch (\PDOException $e) { die("PDO ERROR: " . $e->getMessage()); }
使用
导入包装类
为了便于使用,建议使用 use
导入包装器类
use \ezrarieben\PdoWrapperSingleton\Database;
设置数据库连接
为了使用包装器类 Database
,需要先设置连接参数。
需要设置某些必需参数,以便PDO连接能够正常工作。
(请参阅可用参数表中的“必需”列以获取必需参数)
最小设置示例
Database::setHost("localhost"); Database::setUser("user"); Database::setPassword("123456");
完整设置示例
Database::setHost("localhost"); Database::setPort(3307); Database::setUser("user"); Database::setPassword("123456"); Database::setDbName("foobar"); Database::setPdoAttributes(array( PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ, ));
可用参数
数据库交互
使用PDO函数
所有PDO函数都可以通过Database
类静态访问
$query = "SELECT * FROM `cars` WHERE `color` = ?"; $stmt = Database::prepare($query); $stmt->execute(['red']); $row = $stmt->fetch();
预处理语句
Database
类有一个用于预处理语句的快捷函数,称为run()
如果查询的预处理和执行成功,则该函数将返回一个PDOStatement
对象。
如果查询的预处理或执行失败,则该函数将抛出PDOException
或根据当前设置的PDO错误模式返回false
。
(有关更多信息,请参阅错误处理)
示例
$query = "SELECT * FROM `cars` WHERE `color` = ?"; $stmt = Database::run($query, ['red']); $row = $stmt->fetch();
使用命名参数的示例
$query = "SELECT * FROM `cars` WHERE `color` = :color"; $stmt = Database::run($query, [':color' => 'red']); $row = $stmt->fetch();
错误处理
PDO的错误模式默认设置为ERRMODE_EXCEPTION
。
因此,可以通过try和catch块进行错误处理。
try { $query = "SELECT * FROM `cars` WHERE `color` = ?"; $stmt = Database::run($query, ['red']); $row = $stmt->fetch(); } catch (PDOException $e) { // Handle exception }
当切换到不同的错误模式时,您需要通过布尔值来处理错误。
注意:使用布尔值进行错误处理仅在更改PDO的错误模式时受支持。
$query = "SELECT * FROM `cars` WHERE `color` = :color"; if($stmt = Database::run($query, [':color' => 'red'])) { // Preparing and executing statement was successfull so fetch the result $row = $stmt->fetch(); }