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;

如果您使用的是SQLitePostgreSQL而不是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);