ezrarieben/pdo-wrapper-singleton

遵循单例模式编写的PDO MySQL数据库连接包装类

1.0.0 2024-02-11 19:42 UTC

This package is auto-updated.

Last update: 2024-09-12 00:24:25 UTC


README

一个遵循单例模式的PDO MySQL数据库连接的PHP包装类。

License: MIT

目录

安装

要在项目中使用包装器,请通过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();
}