imphp/database

统一与多个数据库通信的数据库库

1.1.0 2021-11-05 09:15 UTC

This package is auto-updated.

Last update: 2024-09-05 15:51:55 UTC


README

这个库提供了一个非常轻量级的数据库抽象层,它可以在多个数据库之间创建一致性和便捷性。它非常容易使用,与许多PHP提供的数据库驱动程序不同,它不仅支持一个数据库,还支持所有支持的数据库。

错误
一些数据库库会打印警告,一些会抛出异常,处理最后错误方法等。有些甚至通过让库的一部分做一件事,另一部分做另一件事来混合它们。

这个库通过始终使用异常处理数据库错误来简化这一点。没有例外。如果您将数据库连接包裹在try/catch中,您就可以确信您的代码会在遇到第一个错误时停止,而无需处理警告、检查每个方法调用后的错误代码等。任何方法上的每个返回值都是一个成功的返回。

完整文档

您可以通过完整文档了解更多信息。

安装

使用 .phar 库

wget https://github.com/IMPHP/database/releases/download/<version>/imphp-database.phar
require "imphp-database.phar";

...

通过 git 克隆

git clone https://github.com/IMPHP/database.git imphp/database/

Composer (Packagist)

composer require imphp/database

用法

每个驱动程序都可以在它们自己的命名空间中找到,例如 im/database/mysqliim/database/sqlite3。每个驱动程序都有一个基于 im/database/ConnectionConnection 类,用于建立与数据库的连接并利用它。查询将返回一个 im/database/Result 实例,可以用来访问所需的数据。

use im\database\mysqli\Connection;

$id = 10;
$conn = new Connection("localhost", "My_DB", "user", "MyPassw");
$result = $conn->enquire("SELECT FROM tbl WHERE id=%i", $id);
$rownum = $result->fetchColumn("row_num", true);

$affected = $conn->execute("DELETE FROM tbl WHERE row_num=%i", $rownum);

if ($affected > 0) {
    echo "Success!";
}

$conn->close();

预处理语句

use im\database\sqlite3\Connection;

$conn = new Connection("My_DB.db");
$stmt = $conn->stmt("UPDATE tbl SET role=%s WHERE id=%i");
$users = [
    10 => "admin",
    12 => "user",
    25 => "admin"
];

foreach ($users as $id => $role) {
    $stmt->execute($role, $id);
}

$stmt->close();
$conn->close();