hengeb / db
一个简单的MySQL库(PDO包装器)
v0.3
2024-08-15 13:25 UTC
Requires
- php: >=7.4.0
- ext-pdo_mysql: *
README
一个简单的PHP MySQL库(PDO包装器)
安装
使用以下命令安装最新版本
$ composer require hengeb/db
基本用法
<?php use Hengeb\Db\Db; $db = new Db([ "host" => "example.org", "port" => 3306, "database" => "my_database", "user" => "johndoe", "password" => "secret" ]); // alternative: $db = Db::getInstance(); /** * in this case the configuration will be loaded from environment variables * - MYSQL_HOST (default: localhost) * - MYSQL_PORT (default: 3306) * - MYSQL_DATABASE (default: database) * - MYSQL_USER (no default, required) * - MYSQL_PASSWORD (no default, required) */ // query() and execute() return insert id if a row was inserted $id = $db->query("INSERT INTO contacts SET name=:name, phone=:phone", [ "name" => "Jane", "phone" => "555-123", ])->getInsertId(); // e.g. $id === 4 // get single value $phone = $db->query("SELECT phone FROM contacts WHERE id=:id", ["id" => $id])->get(); // $phone === "555-123" // get single key for multiple rows $allNames = $db->query("SELECT name FROM contacts ORDER BY name")->getColumn(); // $allNames === ["Alice", "Bob", "Jane", "Joe"] // get single row $contact = $db->query("SELECT name, phone FROM contacts WHERE id=:id", ["id" => $id])->getRow(); // $contact === ["name" => "Jane", "phone" => "555-123"] // get associative array with the datra $contacts = $db->query("SELECT name, phone FROM contacts ORDER BY name")->getAll(); // $contacts === [["name" => "Alice", "phone" => "555-987"], ...] // reuse prepared statement $names = []; $statement = $db->prepare("SELECT name FROM contacts WHERE id=:id"); for ([1, 2, 3, 4] as $id) { $names[] = $statement->bind(["id" => $id])->execute()->get(); } // $names === ["Bob", "Alice", "Joe", "Jane"] // transaction: $db->beginTransaction(); $db->query("INSERT INTO contacts SET name=:name, phone=:phone", [ "name" => "Claire", "phone" => "555-222", ]); $db->commit(); // or $db->rollback()
作者
Henrik Gebauer - code@henrik-gebauer.de - https://www.henrik-gebauer.de
许可证
此软件根据MIT许可证授权 - 详细信息请参阅LICENSE文件