存储查询 - PHP SQL 库,提供一种简单、优雅、流畅且表达性强的选择、创建、更新和删除 SQL 记录的方式。

dev-master 2018-04-17 13:45 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:47:46 UTC


README

存储查询是一个 PHP SQL 库,提供了一种简单、优雅、流畅且表达性强的选择、创建、更新和删除 SQL 记录的方式。总体来说,它是一个围绕 PHP 的 PDO 数据库抽象层的一个简单薄包装。该层流畅性提供了一种直接使用实际 SQL 文件与 SQL 交互的方法。

这个库最初是 Skyfire PHP 框架数据库层的一部分,被称为 DB 服务。

注意:存储查询在本质上不是任何形式的 ORM,而是一个用于原生 PDO 的包装替代品。

目前存储查询只支持 MySQL 和 PostgreSQL 数据库。其他平台的支持计划在后续版本中实现。

需求

  • PHP >=5.6+
  • PDO_MYSQL PHP 扩展

出于安全和功能原因,PHP 5.6 是必需的。
按照标准,你现在应该使用 5.6 或更高版本的 PHP。

代码示例

// setting the DB display encoding type (if needed)
FixCollation::charset('utf-8', FixCollation::TEXT_HTML);

// setting Database credentials
DB::define('stash_dir',   getcwd()); // or dirname(__FILE__)
DB::define('host',       'localhost');
DB::define('dbname',     'test_db1');
DB::define('dbuser',     'root');
DB::define('dbpassword', '');


// SQL select query (with prepare variables)
$prepare = array
(
    'label' => 'test'
);
$data = DB::select('get.HomeTextByLabel')->prepare($prepare);
var_dump($data);


// SQL simple select query
$data = DB::select('get.AllHomeTextData')->execute();
var_dump($data);


// raw SQL query (with prepare variables)
$data = DB::query('SELECT * FROM test WHERE data IS NOT NULL AND id > :count AND data != :text', array
(
    ':id'   => 10,
    ':text' => 'test'
))->execute();
var_dump($data);


// displays the prepare update statement in plain text (ideal for debugging queries)
$query = DB::update('PostfromTestById')->text($prepare);
echo $query;

注入

在不绑定的情况下分配查询外部的动态变量(如表名和字段,这是 PDO 绑定所不可能实现的),实现安全注入

$data = DB::select('get.fieldData.byId')->inject(array
(
    'field' => $data->field,
    'table' => $table_name
))->prepare(array('id' => (int) $record->id));

持久连接

为了对所有查询使用持久连接,可以在 DB 配置中定义它,如下所示

DB::define('persistent', TRUE);
// DB::define('persistent', 'yes');

上述两个示例都工作得很好,只允许 TRUE 或 'yes'。

创建查询文件夹

如果查询不存在(或对其存在性不确定),调用以下函数将在它们不存在时创建查询文件夹。如果没有创建任何目录,该函数将返回 FALSE,或者创建的目录数量(例如 4)。

DB::createQueryDirectories();

注意:将此函数放在所有 DB::define() 调用之后非常重要。

如果不存在则创建数据库(快捷方式)

DB::createNotExist('database_name');

注意:将此函数放在所有 DB::define() 调用之后非常重要。

安装

手动注入代码,只需将 'StashQueries.php' 包含进去即可

require_once 'DB/StashQueries.php';

也可以通过 composer 外部添加,在 composer.json 的 composer 依赖中添加 'SkyfirePHP/DB'

{
    "require": {
        "skyfirephp/db": "dev-master"
    }
}

许可证

存储查询采用MIT 许可证

版权所有 2015-2017 Travis van der Font