felixkiss / database
PDO 的简单包装器
v0.4.0
2014-04-30 10:25 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- phpspec/phpspec: 2.0.*
README
本项目是 PDO 类的一个薄包装器,允许在 PHP 中与数据库交互时编写更干净、更简洁的代码。
它不是为了成为 ORM,而是为了更好地编写手写的 SQL 语句。
安装
通过 composer 安装
$ composer require felixkiss/database:0.*
或直接编辑 composer.json
{ "require": { "felixkiss/database": "0.*" } }
然后运行 composer update
。
使用方法
实例化一个 Database
实例
require 'vendor/autoload.php'; use Felixkiss\Database\Database; $pdo = new PDO('mysql:dbname=foo;host=127.0.0.1', 'foo', 'bar'); $db = new Database($pdo);
执行 SQL 语句
$db->execute('TRUNCATE some_table');
可以使用 execute
方法执行任何预处理语句。它接受一个可选的参数数组作为第二个参数。
SELECT
$user = $db->select('SELECT * FROM user'); foreach ($users as $user) { // Do something ... }
带编号参数
$users = $db->select('SELECT * FROM user WHERE age BETWEEN ? AND ?', [20, 40]);
带命名参数
$users = $db->select( 'SELECT * FROM user WHERE age BETWEEN :young AND :old LIMIT 0, :limit', [ ':young' => 20, ':old' => 40, ':limit' => 10, ]);
获取一列的数组
$users = $db->lists('SELECT username FROM users');
这将返回一个扁平化的数组,例如
['felixkiss', 'foobar', ...]
获取单个值
$count = $db->pluck('SELECT COUNT(*) FROM users');
插入记录
$db->insert('users', [ 'username' => 'felixkiss', 'location' => 'Vienna, Austria', ]);
更新记录
$db->update('users', [ 'location' => 'Toronto, Canada', ], 'WHERE username = ?', ["felixkiss"] );
读写操作的不同连接
有时指定单独的读取(SELECT)和写入(INSERT、UPDATE、DELETE)连接可能会有用,例如在复制环境中。
$read = new PDO('mysql:dbname=foo;host=127.0.0.1', 'foo', 'bar'); $write = new PDO('mysql:dbname=foo;host=mirror.example.com', 'foo', 'bar'); $db = new Database($read, $write);
默认情况下,其他 SQL 语句(通过 execute()
)将在写入连接上调用,除非指定了第三个参数 $readOnly = true
$db->execute('TRUNCATE users'); // runs on write connection $db->execute('LOCK TABLE users WRITE', [], true); // runs on read connection
许可证
MIT,请参阅 LICENSE.md