xuanyan / database
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-14 14:36:03 UTC
README
数据库抽象层目前支持 mysql mysqli PDO SQLiteDatabase AND SQLite3,未来还将支持更多...
更多信息请点击这里
使用 composer 安装
```php5
{
“require”: {
“xuanyan/database”: “dev-master”
}
}
```
如何使用它
数据库初始化
```php5
<?php
require_once ‘Database.php’;
// pdo
$db = Database::connect(‘pdo’, ‘mysql:dbname=test;host=localhost’, ‘root’, ‘root’);
$db = new Database(‘pdo’, ‘mysql:dbname=test;host=localhost’, ‘root’, ‘root’);
$db = Database::connect(array(‘pdo’, ‘mysql:dbname=test;host=localhost’, ‘root’, ‘root’));
$db = new Database(array(‘pdo’, ‘mysql:dbname=test;host=localhost’, ‘root’, ‘root’));
$link = new PDO;
$db = Database::connect($link);
$db = new Database($link);
// mysql
$db = Database::connect(‘mysql’, ‘localhost’, ‘root’, ‘root’, ‘test’);
$db = new Database(‘mysql’, ‘localhost’, ‘root’, ‘root’, ‘test’);
$db = Database::connect(array(‘mysql’, ‘localhost’, ‘root’, ‘root’, ‘test’));
$db = new Database(array(‘mysql’, ‘localhost’, ‘root’, ‘root’, ‘test’));
$link = mysql_connect(‘localhost’, ‘root’, ‘root’);
mysql_select_db(‘test’, $link);
$db = Database::connect($link);
$db = new Database($link);
// mysqli
$db = Database::connect(‘mysqli’, ‘localhost’, ‘root’, ‘root’, ‘test’);
$db = new Database(‘mysqli’, ‘localhost’, ‘root’, ‘root’, ‘test’);
$db = Database::connect(array(‘mysqli’, ‘localhost’, ‘root’, ‘root’, ‘test’));
$db = new Database(array(‘mysqli’, ‘localhost’, ‘root’, ‘root’, ‘test’));
$link = new mysqli(‘localhost’, ‘root’, ‘root’, ‘test’);
$db = Database::connect($link);
$link = mysqli_init();
$link→real_connect(‘localhost’, ‘root’, ‘root’, ‘test’);
$db = Database::connect($link);
$db = new Database($link);
// sqlite
$db = Database::connect(‘sqlite’, ‘test.sqlite’);
$db = new Database(‘sqlite’, ‘test.sqlite’);
$db = Database::connect(array(‘sqlite’, ‘test.sqlite’));
$db = new Database(array(‘sqlite’, ‘test.sqlite’));
$link = new SQLiteDatabase(‘test.sqlite’);
$db = Database::connect($link);
$db = new Database($link);
$link = sqlite_open(‘test.sqlite’);
$db = Database::connect($link);
$db = new Database($link);
// sqlite3
$db = Database::connect(‘sqlite3’, ‘test.sqlite3’);
$db = new Database(‘sqlite3’, ‘test.sqlite3’);
$db = Database::connect(array(‘sqlite3’, ‘test.sqlite3’));
$db = new Database(array(‘sqlite3’, ‘test.sqlite3’));
$link = new SQLite3(‘test.sqlite3’);
$db = Database::connect($link);
$db = new Database($link);
?>
```
使用 $instance 变量
```php5
<?php
require_once ‘Database.php’;
// 设置 Database::$instance
Database::$instance = Database::connect(‘mysql’, ‘localhost’, ‘root’, ‘root’, ‘test’);
// 在某个函数中,你可以这样使用它们
print_r(test());
function test() {
$sql = “SELECT * FROM test WHERE id = ?”;
$data = Database::$instance→getRow($sql, 1);
}
?>
```
演示代码
```php5
<?php
// 原始 sql
$sql = “SELECT * FROM test_table WHERE id = ‘$id’ AND name = ‘$name’”;
$result = $db→getAll($sql);
// 如果 sql 中有变量,你可以这样做,不需要处理变量。 : )
$sql = “SELECT * FROM test_table WHERE id = ? AND name = ?”;
$result = $db→getAll($sql, $id, $name);
// 你也可以使用
$sql = “SELECT * FROM test_table WHERE id = ? AND name = ?”;
$result = $db→getAll($sql, array($id, $name));
// 它也支持
$sql = “SELECT * FROM test_table WHERE id = :id AND name = :name”;
$result = $db→getAll($sql, array(‘name’=>$name, ‘id’=>$id));
?>
```
数据库方法
```php5
<?php
public function getRow();
// 获取行结果
public function getCol();
// 获取列结果
public function getOne();
// 获取列值
public function getAll();
// 获取所有结果
public function exec();
// 执行SQL
public function lastInsertId();
// 获取最后插入行的ID或序列值
public function getDriver();
// 获取数据库驱动程序的原始链接或对象
public function query();
// 执行SQL并返回一个语句对象
public function fetch($query);
// 从查询中通过语句对象获取结果
?>
```
该类在初始化时只做连接工作。连接后可以像连接一样延迟执行“初始化SQL”,当然,它是延迟执行的。
```php5
<?php
// mysql
$db = Database::connect(‘mysql’, ‘localhost’, ‘root’, ‘root’, ‘test’);
$db→initialization = array(
‘SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary’,
“SET sql_mode=’’”
);
// 与上面相同
$db→setConfig(‘initialization’, array(
‘SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary’,
“SET sql_mode=’’”
));
?>
```
使用表前缀
```php5
<?php
// mysql
$db = Database::connect(‘mysql’, ‘localhost’, ‘root’, ‘root’, ‘test’);
$db→setConfig(‘tablePreFix’, ‘db_’);
// 或设置多个表前缀
$db→setConfig(‘tablePreFix’, array(
‘db1_’=>array(‘table1’, ‘table2’),
‘db2_’=> ‘*’ // 表示其他表使用‘db2_’前缀
));
// 您可以通过getTable函数获取表名
$table_name = $db→getTable(‘table1’); // db1_table1
// 默认情况下,如果SQL中使用‘{{tablename}}’,会自动将表名替换为‘tablePreFix’
$sql = “SELECT * FROM {{table1}}”;
// SELECT * FROM db1_table1
$result = $db→getAll($sql);
// 您可以使用以下方法禁用自动替换
$db→setConfig(‘replaceTableName’, false);
?>
```