davidlienhard/database
Composer 安装命令:
composer require davidlienhard/database
包简介
🐘 php library for easy access to databases
README 文档
README
🐘 php library for easy access to databases
Setup
You can install through composer with:
composer require davidlienhard/database:^3
Note: davidlienhard/database requires PHP 8.4
Examples
Connect to the Database-Server
<?php declare(strict_types=1); use DavidLienhard\Database\Exceptions\Exception as DatabaseException; use DavidLienhard\Database\Mysqli; try { $db = new Mysqli; $db->connect("hostname", "username", "password", "dbname"); } catch (DatabaseException $e) { echo "unable to connect to the database host"; exit(1); }
Fetch Results as Objects (Recommended)
Fetching Multiple Rows as Objects
<?php declare(strict_types=1); use DavidLienhard\Database\Mysqli; $userResult = $db->query( "SELECT `userID`, `userName`, `userLevel` FROM `user`" ); while ($userData = $userResult->fetch_object()) { echo $userData->get('userID').": ".$userData->get('userName').PHP_EOL; }
Fetching a Single Row as Object
<?php declare(strict_types=1); use DavidLienhard\Database\Exceptions\NoRowsException; use DavidLienhard\Database\Mysqli; try { $userResult = $db->query( "SELECT `userID`, `userName`, `userLevel` FROM `user` WHERE `userID` = ?", new DBParam("i", $userId) ); $user = $userResult->fetch_single_object(); echo $user->get('userName'); } catch (NoRowsException $e) { echo "user not found"; }
Fetch Results as Arrays
Fetching Multiple Rows as Associative Arrays
<?php declare(strict_types=1); use DavidLienhard\Database\Mysqli; $userResult = $db->query( "SELECT `userID`, `userName` FROM `user`" ); while ($userData = $userResult->fetch_array_assoc()) { echo $userData['userID'].": ".$userData['userName'].PHP_EOL; }
Fetching a Single Row as Associative Array
<?php declare(strict_types=1); use DavidLienhard\Database\Exceptions\NoRowsException; use DavidLienhard\Database\Mysqli; try { $userResult = $db->query( "SELECT `userID`, `userName` FROM `user` WHERE `userID` = ?", new DBParam("i", $userId) ); $user = $userResult->fetch_single_array_assoc(); echo $user['userName']; } catch (NoRowsException $e) { echo "user not found"; }
Select Query with Parameters
<?php declare(strict_types=1); use DavidLienhard\Database\Mysqli; use DavidLienhard\Database\Parameter as DBParam; $userResult = $db->query( "SELECT `userID`, `userName` FROM `user` WHERE `userLevel` = ? and `userType` = ?", new DBParam("i", $userLevel), new DBParam("s", $userType) ); while ($user = $userResult->fetch_object()) { echo $user->get('userID').": ".$user->get('userName').PHP_EOL; }
Insert Query
<?php declare(strict_types=1); use DavidLienhard\Database\Exceptions\Exception as DatabaseException; use DavidLienhard\Database\Mysqli; use DavidLienhard\Database\Parameter as DBParam; try { $db->query( "INSERT INTO `user` SET `userName` = ?, `userLevel` = ?, `userType` = ?", new DBParam("s", $userName), new DBParam("i", $userLevel), new DBParam("s", $userType) ); } catch (DatabaseException $e) { echo "unable to insert into table"; exit(1); }
Update Query
<?php declare(strict_types=1); use DavidLienhard\Database\Exceptions\Exception as DatabaseException; use DavidLienhard\Database\Mysqli; use DavidLienhard\Database\Parameter as DBParam; try { $db->query( "UPDATE `user` SET `userName` = ?, `userLevel` = ? WHERE `userID` = ?", new DBParam("s", $userName), new DBParam("i", $userLevel), new DBParam("i", $userId) ); } catch (DatabaseException $e) { echo "unable to update table"; exit(1); }
Transactions
<?php declare(strict_types=1); use DavidLienhard\Database\Mysqli; use DavidLienhard\Database\Parameter as DBParam; try { $db->begin_transaction(); $db->query( "INSERT INTO `user` SET `userName` = ?", new DBParam("s", $userName) ); $db->query( "INSERT INTO `user_log` SET `action` = ?", new DBParam("s", "user_created") ); $db->commit(); } catch (Exception $e) { $db->rollback(); echo "transaction failed"; }
API Overview
Fetch Methods
fetch_object(ResultType $resultType = assoc): RowInterface|null- Returns aRowInterfaceobject that wraps the row data. Use$row->get('columnName')or$row->getAll()to access data.fetch_single_object(ResultType $resultType = assoc): RowInterface- Likefetch_object()but throwsNoRowsExceptionif no rows are available.fetch_array_assoc(): array|null- Returns an associative array with column names as keys.fetch_single_array_assoc(): array- Likefetch_array_assoc()but throwsNoRowsExceptionif no rows are available.fetch_array_num(): array|null- Returns an enumerated array with numeric indices.fetch_single_array_num(): array- Likefetch_array_num()but throwsNoRowsExceptionif no rows are available.fetch_array(ResultType $resultType): array|null- Generic fetch returning either associative or numeric arrays based on$resultType.
Deprecated Methods
The following methods are deprecated and should not be used in new code:
fetch_assoc()- Usefetch_array_assoc()insteadfetch_row()- Usefetch_array_num()instead
License
The MIT License (MIT). Please see LICENSE for more information.
davidlienhard/database 适用场景与选型建议
davidlienhard/database 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 10.2k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 04 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「database」 「php」 「library」 「mysql」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 davidlienhard/database 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 davidlienhard/database 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 davidlienhard/database 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Dibi is Database Abstraction Library for PHP
Store your language lines in the database, yaml or other sources
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
A PSR-7 compatible library for making CRUD API endpoints
Inbox pattern process implementation for your Laravel Applications
Core library that defines common interfaces used by the rest of the intahwebz..
统计信息
- 总下载量: 10.2k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-04-14