mk / database-connection-handler
PDO 封装,用于以更少的配置和更便捷的方式使用 MySQL 数据库
Requires
- php: >=5.3.1
This package is auto-updated.
Last update: 2024-09-18 23:55:24 UTC
README
DatabaseConnectionHandler 是一个简单的 PDO 封装。DatabaseConnectionHandler 允许通过 PDO 轻松访问 MySQL 数据库。它包括一个单例模式,可以在整个项目中只打开一个数据库连接,这样您的应用程序就不会因为处理太多数据库连接而出现问题。它还包括以下描述的使用模式。
需求
- PHP 版本 5.3.1 或更高版本
- 要连接的 MySQL 数据库(目前仅限于此)
安装
Composer
composer require mk/database-connection-handler
手动安装
- 只需将包含的文件复制到项目中的一个文件夹中,然后在您的 php 文件中需要使用它的任何地方包含
DatabaseConnectionHandler.php
即可。 - 为了提供您自己的数据库的连接凭证,请编辑文件
DataBaseConnection.php
并使用您自己的 MySQL 服务器信息填充占位符。
路线图/规范
- 使用命名空间
- PHP 7+ 兼容
- 使用异常处理错误
- 使用
?
和:param
语法进行预处理语句 - 欢迎提出问题或更多功能建议
使用方法
命名空间
使用 \MK\DB
作为命名空间。
打开连接/创建实例
将 DatabaseConnectionHandler.php
包含到 php 文件中后,您需要通过静态函数 getInstance()
获取当前实例。之后,您就可以查询数据库了。
查询数据库
创建 DatabaseConnectionHandler
实例后,您可以使用 query()
方法进行查询,无论是获取结果还是插入数据或其他操作。
query()
方法有两个参数
- $query 是 SQL 查询字符串。
- $arguments 是一个数组,包含查询字符串的特定参数。此参数也可以为空。
带有参数的查询构建方式类似于您在 PDO 中使用的任何查询,即使用 "?" 来通知 DatabaseConnectionHandler 在 $arguments 数组中有一个与占位符匹配的参数。例如:
use \MK\DB; $dbc_handler = DatabaseConnectionHandler::getInstance(); $searched_name = "Jack"; $searched_age = 21; $result = $dbc_handler->query("INSERT INTO my_table (name, age) VALUES (?, ?);", array($searched_name, $searched_age));
这种预处理语句的行为与纯 PDO 中的命名占位符类似
use \MK\DB; $dbc_handler = DatabaseConnectionHandler::getInstance(); $searched_name = "Jack"; $searched_age = 21; $result = $dbc_handler->query("INSERT INTO my_table (name, age) VALUES (:name, :age);", array(":name" => $searched_name, ":age" => $searched_age));
从查询中获取结果
查询每个 query()
方法调用都会返回一个 DatabaseResult
对象。此对象包含所有查询数据以及查询所选的行和最后的插入 ID(如果适用)。
DatabaseResult
具有以下方法
getSelectedRows()
:如果适用,返回查询中找到的行。nextRow()
:如果适用,返回查询的下一行。该行是一个关联数组,其中包含查询列作为键。fetchAll()
:与只返回查询的下一行不同,此方法返回所有剩余的行,并将它们打包到一个数组中。getLastInsertID()
:如果适用,返回最后的插入 ID。
以下是如何使用 DatabaseResult 对象的简单示例:
use \MK\DB; $dbc_handler = DatabaseConnectionHandler::getInstance(); $searched_name = "Jack" $searched_age = 21 $result = $dbc_handler = $dbc_handler->query("INSERT INTO my_table (name, age) VALUES (?, ?);", array($searched_name, $searched_age)); //Last insert id $last_insert_id = $result->getLastInsertID(); //Loop through result $result2 = $dbc_handler->query("SELECT id, name, age FROM my_table;", array()); foreach($result2->fetchAll() as $row) { print_r($row); } //Get single (estimated) result $result3 = $dbc_handler->query("SELECT id, name, age FROM my_table WHERE name = ?;", array($searched_name)); if($result3->getSelectedRows() > 0) { //Is there an result? $searched_row = $result3->nextRow(); }