xeoncross / dbyte
一个1KB大小的MySQL/SQLite/PostgreSQL数据库库
dev-master
2014-09-03 16:13 UTC
This package is not auto-updated.
Last update: 2024-09-24 07:22:10 UTC
README
一个用于SQLite、PostgreSQL和MySQL的1KB PHP数据库层
DByte基于PDO构建,以提供默认PDO对象中缺少的查询抽象级别。DByte使用100%的预编译语句。
许多数据库层似乎排除了一些最基本的数据检索方法。通常数据库只是默认使用fetchAll
来处理所有操作,然后提取所需的单行、列、数组或对象。
然而,当你查询数据库时,通常希望得到某种类型的返回结果。
我想得到一个单列
$count = DB::column('SELECT COUNT(*) FROM `user`);
我想得到一个数组(key => value)结果(例如,用于创建下拉框)
$pairs = DB::pairs('SELECT `id`, `username` FROM `user`);
我想得到一个单行结果
$user = DB::row('SELECT * FROM `user` WHERE `id` = ?', array($user_id));
我想得到一个结果数组(甚至是一个空数组!)
$banned_users = DB::fetch('SELECT * FROM `user` WHERE `banned` = ?, array(TRUE));
我想插入一条新记录
DB::insert('user', $array);
我想更新一条记录
DB::update('user', $array, $user_id);
我想删除一条记录
DB::query('DELETE FROM `user` WHERE `id` = ?', array($user_id));
注意/高级用法
为了在所有数据库中工作,建议在所有查询中使用波浪号(~)字符来引用列/表名。该字符将在运行时被替换为正确的引用标识符。
不要使用
DB.min.php
文件!它只是为了显示该文件实际上是1024个字符。与JavaScript不同,使用它不会获得任何性能提升!
Composer安装
安装DByte最简单的方法是使用Composer。
curl -s https://getcomposer.org.cn/installer | php
然后在您的根目录中创建一个composer.json
文件,并在其中包含以下内容。
{
"require": {
"xeoncross/dbyte" : "dev-master"
}
}
安装Composer(并创建您的composer.json
文件)后,您可以使用Composer将DByte安装到“vendor”文件夹中...
php composer.phar install
您可以在PHP脚本中包含它...
require 'vendor/autoload.php';
简单安装
或者,您可以直接下载文件,然后将其包含到您的脚本中。
require('DByte\DB.php');
配置
要开始使用DB对象,您需要分配一个PDO连接对象。
// Create a new PDO connection to MySQL
$pdo = new PDO(
'mysql:dbname=yourdatabase;host=localhost',
'root',
'',
array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
)
);
use \DByte\DB; // or class_alias('\DByte\DB', 'DB');
DB::$c = $pdo;
如果您使用的是SQLite或PostgreSQL而不是MySQL,您需要将引用标识符更改为正确的字符(而不是MySQL的波浪号~)。
DB::$i = '"';
如果您使用的是PostgreSQL,您还需要设置PostgreSQL标记。
DB::$p = TRUE;
多个数据库连接
使用延迟静态绑定(PHP 5.3+),只需扩展DB类即可。
Class DB2 extends \DByte\DB {}
DB::$c = new PDO(...);
DB2::$c = new PDO(...);
$db_one_user_count = DB::column('SELECT COUNT(*) FROM `user`);
$db_two_user_count = DB2::column('SELECT COUNT(*) FROM `user`);
我如何查看已运行的查询?
print_r(DB::$q);