skyfirephp / db
存储查询 - PHP SQL 库,提供一种简单、优雅、流畅且表达性强的选择、创建、更新和删除 SQL 记录的方式。
Requires
- php: >=5.3.6
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