imphp / database
统一与多个数据库通信的数据库库
1.1.0
2021-11-05 09:15 UTC
Requires
- imphp/base: ~1.1
Suggests
- ext-mysqli: Needed in order to use the MySQL driver that comes with this library. Consider using the mysqlnd extension for more optimized performance.
- ext-sqlite3: Needed in order to use the SQLite3 driver that comes with this library
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/mysqli
和 im/database/sqlite3
。每个驱动程序都有一个基于 im/database/Connection
的 Connection
类,用于建立与数据库的连接并利用它。查询将返回一个 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();