tnapf/pdo

具有附加功能的 PDO 驱动程序

v1.0.1 2023-02-12 21:02 UTC

This package is auto-updated.

Last update: 2024-09-30 01:21:44 UTC


README

利用魔法使PDO更容易

安装

composer require tnapf/pdo

创建连接

手动操作

$driver = (new Driver)
	->withUsername("root")
	->withPassword("password")
	->withDatabase("database")
	->withHost("127.0.0.1")
	->withPort(3306)
	->withPrefix(Driver::PREFIX_MYSQL)
	->connect()
;

您可以使用 Driver::setDsnProp 或 Driver::with{在此处插入dsn属性名} 来设置额外的dsn值

使用数据库预定义的 createDriver 方法

目前我只实现了mysql、postgres和SQLite的特定方法

$driver = Driver::createMySqlDriver("root", "password", "database")->connect();
$driver = Driver::createPostgresSqlDriver("root", "password", "database")->connect();
$driver = Driver::createSQLiteDriver("/path/to/db.sqlite")->connect();

// you can set the host and port in the last two parameters but they default to localhost and the default port of the service

执行查询

$rows = $driver->query("SELECT * FROM table")->fetchAll(PDO::FETCH_ASSOC);

驱动程序将内部存储 PDOStatement 并检测您调用的方法是否存在于 PDOStatement 或 PDO 中,并根据情况在实例上调用它。 幸运的是,这两个类之间没有相同的方法名称

准备语句

$driver->prepare("SELECT * FROM table WHERE column = :column");
$driver->bindValue("column", "value");
$driver->execute();
$rows = $driver->fetchAll(PDO::FETCH_ASSOC);

单例构造函数参数

如果您将单例参数构造为 true,则新实例将被存储为类的静态属性,可以从任何地方通过 get 方法调用。您还可以从 Driver 静态调用 PDO/PDOStatement 方法,它的工作方式类似于 $driver->methodName

(new Driver(true))
	->withUsername("root")
	->withPassword("password")
	->withDatabase("database")
	->withHost("127.0.0.1")
	->connect()
;

function getRowWhereIdIs(int $id, int $fetch_type = PDO::FETCH_ASSOC): mixed
{
	Driver::prepare("SELECT * FROM table WHERE id = :id");
	Driver::bindValue("id", $id);
	Driver::execute();
	return Driver::fetch($fetch_type);
}

$row = getRowWhereIdIs(20);