orphans/mysql-wrapper

一个数据库包装类,有助于减少代码并支持快速开发

0.1.0 2015-03-04 20:53 UTC

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 ...');

结束语

该类中仍有一些针对特定目的的日期格式转换解决方案。由于这些功能在推广到更多用途之前需要进一步泛化,因此尚未进行文档记录。

目前日志选项也尚未完成且未进行文档记录。

随着新需求(或不足之处!)的出现,开发工作将继续进行。