aviat4ion / query
v2.5.1
2015-07-31 14:56 UTC
Requires
- php: >=5.3
README
查询构建器/数据库抽象层,使用预处理语句确保安全性。
要求
- 您要使用的数据库的 PDO 扩展(除非是 Firebird,在这种情况下需要 interbase 扩展)
- 支持的 PHP 版本(较旧版本可能也能工作,但不予支持)
支持的数据库
- Firebird(通过 interbase 扩展)
- MySQL
- PostgreSQL
- SQLite
将 Query 包集成到您的应用程序中
- 通过 composer 安装并包含
vendor/autoload.php
或 - 仅包含
autoload.php
文件。这将自动加载当前 PHP 安装支持的类。
连接
创建一个类似于以下的连接数组或对象
<?php
$params = array(
'type' => 'mysql', // mysql, pgsql, firebird, sqlite
'host' => 'localhost', // address or socket
'user' => 'root',
'pass' => '',
'port' => '3306',
'database' => 'test_db',
// Only required for
// SQLite or Firebird
'file' => '/path/to/db/file',
// Optional paramaters
'prefix' => 'tbl_', // Database table prefix
'alias' => 'old' // Connection name for the Query function
);
$db = Query($params);
所需参数取决于数据库。
查询函数
您可以使用 Query()
函数作为最后连接的数据库的引用。例如。
<?php
Query()->get('table_name');
// or
$result = Query()->query($sql);
如果参数中设置了 alias
键,您可以引用特定的数据库连接
<?php
// Set the alias in the connection parameters
$params['alias'] = 'old';
// Connect to the legacy database
Query('old')->query($sql);
运行查询
Query 使用与 CodeIgniter 的 Query Builder 类相同的接口。但是,它不实现 update_batch
或缓存方法。有关特定的查询构建器方法,请参阅 类文档。
您也可以手动运行查询。
要运行预处理语句,请调用 $db->prepare_execute($sql, $params)
。
要运行普通查询,请使用 $db->query($sql)
检索结果
一个中等复杂查询的示例
<?php
$query = $db->select('id, key as k, val')
->from('table t')
->where('k >', 3)
->or_where('id !=' 5)
->order_by('val', 'DESC')
->limit(3, 1)
->get();
这将生成一个类似的查询(以下为 PostgreSQL 数据库的输出)
SELECT "id", "key" AS "k", "val"
FROM "table" "t"
WHERE "k" > ?
OR "id" != ?
ORDER BY "val" DESC
LIMIT 3 OFFSET 1
要检索查询结果,请使用 PDO 方法 fetch 和/或 fetchAll。
<?php
$query = $db->get('table_name');
$results = $query->fetchAll(PDO::FETCH_ASSOC);
插入/更新
插入查询的示例
<?php
$query = $db->set('foo', 'bar')
->set('foobar', 'baz')
->where('foo !=', 'bar')
->insert('table');
更新查询的示例
<?php
$query = $db->set('foo', 'bar')
->set('foobar', 'baz')
->where('foo !=', 'bar')
->update('table');
set 方法也可以将数组作为参数,而不是设置单个值。