orphans / mysql-wrapper
一个数据库包装类,有助于减少代码并支持快速开发
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-28 17:33:14 UTC
README
这是一个我们喜欢在小规模快速开发任务中使用的数据库类。它可能不适合所有人,但与我们喜欢与 MySQL/MariaDB 交互的方式相符。
该类利用 PHP 数据对象 (PDO) 扩展,主要目的是减少重复的代码行。
安装
Composer
这是首选的安装方法。
将以下内容添加到您的 composer.json 文件中
{
"require" : {
"orphans/mysql-wrapper" : "0.1.*"
}
}
然后像平常一样安装/更新您的 Composer 项目。请记住包括 Composer 自动加载器
require 'vendor/autoload.php';
Git
您还可以按以下方式将其包含在任何 Git 项目中
git clone https://github.com/orphans/mysql-wrapper.git
git submodule init
git submodule update
请记住,您需要将 mysql_wrapper.class.php 文件包含在您的项目代码中。
未管理
如果您不希望在项目中包含任何外部引用的代码,您可以简单地下载 mysql_wrapper.class.php 文件并将其包含在您的项目中。但这不是首选方法。
设置
代码本身的文档将在以后更好地记录,但到目前为止,以下示例说明了各种用例。
连接
使用以下代码片段创建一个实例
$db = new MYSQL_WRAPPER();
$db->connect(array(
'host' => '127.0.0.1', // hostname or IP
'port' => '3306', // optional, defaults to 3306
'username' => 'some_user',
'password' => 'some_pass',
'database' => 'some_db'
));
或者,对于套接字
$db = new MYSQL_WRAPPER();
$db->connect(array(
'socket' => '/path/to/mysql.sock',
'username' => 'some_user',
'password' => 'some_pass',
'database' => 'some_db'
));
单例模型
尽管对于数据库类(没有多个连接)可能存在潜在的局限性,但在绝大多数情况下,这是一种方便的事物管理方式。
因此,如果您需要在当前作用域之外访问该类,请使用以下代码,而不是将实例全局化或传递给函数。
$db = MYSQL_WRAPPER::get_singleton();
查询助手
在可行的情况下,查询作为数组发送/接收,但不会牺牲灵活性。因此,我们并不回避在更有意义的情况下编写 SQL;最值得注意的是 SELECT 查询。
当编写需要用户输入并需要清洗的查询时,您可以使用占位符 :placeholder,然后在后续数组参数中提供值。以下示例将更清楚地说明这一点!
如果您在 INSERT 或 UPDATE 中提供字符串值 'NOW()' 或 'NULL',则将在发送到 MySQL 时转换为特殊含义。
选择
选择返回结果作为数组,或者在失败时返回 FALSE。
有两种方法 select() 和 select_single()。两者工作方式相同,只是后者仅返回包含第一个结果的单一维数组。
$db->select("SELECT * FROM `orders`");
$db->select("SELECT * FROM `users` WHERE `name` = :name", [ 'name' => 'John Smith' ]);
插入
通过发送表引用和字段 => 值数组执行插入操作。
此方法将返回新行的 ID,或者在失败时返回 FALSE。
$db->insert('users', [
'name' => 'John Smith',
'email' => 'john.smith@somedomain.com',
'last_updated' => 'NOW()',
]);
您可以通过在方法调用末尾添加额外的 TRUE 参数来告诉 MySQL 忽略错误。
$db->insert('users', [
'name' => 'John Smith',
'email' => 'john.smith@somedomain.com',
'last_updated' => 'NOW()',
], TRUE);
更新
更新操作与插入操作类似,除了您还需要传递 WHERE 子句。子句的第一部分(第 3 个参数)是实际的 WHERE 子句,其中使用占位符进行清洗,如上所述。
此方法将根据结果状态返回 TRUE 或 FALSE。
$db->update('users', [
'email' => 'john.smith@somedomain.com',
'last_updated' => 'NOW()',
], "`id` = :id", [
'id' => 1
]);
插入或更新重复项
与插入操作相同,但如果存在重复行,则还传递一个包含更新字段的第二个数组。
此方法将根据结果状态返回 TRUE 或 FALSE。
$db->insert_or_update('users', [
'name' => 'John Smith',
'email' => 'john.smith@somedomain.com',
'last_updated' => 'NOW()',
], [
'name' => 'John Smith',
'last_updated' => 'NOW()',
]);
删除
只需需要一个表名和一个 WHERE 子句,该子句使用占位符进行清洗,如上所述。
此方法将根据结果状态返回 TRUE 或 FALSE。
$db->delete('users', "`id` = :id", [
'id' => 1
]);
其他查询
对于所有其他查询,您可以调用 query() 方法,该方法接受一个 SQL 查询和一组 :variable 替换。请参阅此页面以提醒您这些替换是如何工作的。
$db->query('ALTER TABLE `users` ADD COLUMN ...');
结束语
该类中仍有一些针对特定目的的日期格式转换解决方案。由于这些功能在推广到更多用途之前需要进一步泛化,因此尚未进行文档记录。
目前日志选项也尚未完成且未进行文档记录。
随着新需求(或不足之处!)的出现,开发工作将继续进行。