dendude / awesome-php-pdo-wrapper
简单的 PDO 包装器
dev-master
2018-08-05 19:08 UTC
This package is not auto-updated.
Last update: 2024-09-20 23:44:39 UTC
README
适用于 >=php7.1 的 PDO 有用包装器
Database\DB 类实现了单例/多例设计模式。
表示例
CREATE TABLE IF NOT EXISTS `users` ( `id` int(10) unsigned NOT NULL auto_increment, `role` varchar(50) NOT NULL, `name` varchar(50) NOT NULL, `email` varchar(50) NOT NULL, `visits` int(10) unsigned NOT NULL DEFAULT 0, `created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ); INSERT INTO `users` (`id`, `role`, `name`, `email`) VALUES (1, 'admin', 'John Smith', 'js@gmail.com'), (2, 'user', 'Barbara Johnson', 'bj@gmail.com'), (3, 'manager', 'Mary Lee', 'mee@gmail.com'), (4, 'user', 'Lucia Woods', 'uw@gmail.com'), (5, 'user', 'Brandon Alister', 'ba@gmail.com');
获取实例
use Database\DB; use Database\DBExpression; $db = DB::getInstanse(); // default db $db2 = DB::getInstanse(DB::CONFIG_OTHER); // another db
选择
// simple select $rows = $db->selectAll('users', ['role' => 'admin']);
// select with NULL option $rows = $db->selectAll('users', [ 'role' => 'admin', 'created' => 'IS NOT NULL' // or 'created' => 'IS NULL' ]);
选择行
$row = $db->selectRow('users', ['email' => 'admin@gmail.com']);
通过 id 选择行
$row = $db->selectRowById('users', 3);
选择列
$emails = $db->selectColumn('users', 'email');
选择单元格
$email = $db->selectCell('users', 'email', ['id' => 3]);
选择计数
$count = $db->selectCount('users');
插入数据
// simple insert $id = $db->insert('users', ['role' => 'user', 'name' => 'new name', 'email' => 'new@gmail.com']);
// insert with mysql expression $id = $db->insert('users', [ 'role' => 'user', 'name' => 'new name', 'email' => 'new@gmail.com', 'created' => new DBExpression('NULL') // or 'created' => null ]);
更新数据
// simple update $affected = $db->update('users', ['role' => 'manager'], ['id' => 2]);
// update with mysql expression $affected = $db->update('users', [ 'role' => 'manager', 'created' => new DBExpression('NOW()') ], ['id' => 2]);
更新计数器字段
$affected = $db->updateCounters('users', ['visits' => 1], ['id' => 3]);
检查现有记录
$isExist = $db->exists('users', ['role' => 'admin']);
删除行
$db->delete('users', ['visits' => 0]);
关闭所有实例的连接
DB::closeConections();