There is no license information available for the latest version (1.0.2) of this package.

lsys database

Maintainers

Details

gitee.com/lonely/ldb

Installs: 299

Dependents: 4

Suggesters: 1

Stars: 0

Watchers: 0

Forks: 0

Type:project

1.0.2 2018-05-16 01:22 UTC

README

目的:使数据库层有统一封装,从而使数据库的调用保持一致的接口,非大而全的数据库操作封装 如果需要更加自动化的数据库层的操作,请使用 [ https://git.oschina.net/lonely/lorm ],让你跟使用对象一样操作数据库 执行SQL时传入SQL类型,有利于进行后期的SQL性能优化及业务逻辑的分拆,方式后期进行[SQL语句匹配的方式进行类型识别]

  1. 本类库支持多数据库进行读写分离,包含多主,多从数据库设置[仅限MYSQL PostgreSQL]

  2. 执行SQL时需指定SQL的类型 [DBMS] ,每种操作返回结果略有不同: . Database::DQL 表示此SQL为数据库查询语句 如 select 语句 . Database::DML 表示此SQL为数据库操纵语句 如 insert update delete 语句 . Database::DDL 表示此SQL为数据库定义语句 如 create 语句 . Database::DCL 表示此SQL为数据库控制语句 如 grant revoke commit 语句

  3. 除 Database::DQL query 返回 Result 对象外,其他返回处理状态

  4. 数据库配置使用 [https://git.oschina.net/lonely/lconfig] 请参考 lconfig 文档

    通过修改 Database::$config="database.mysqli"; 确定使用那个配置

  5. 已实现以下适配

    1. MYSQLI 需要 mysqli 扩展支持 [支持读写分离]
    2. PDO SQLite 需要 pdo 扩展支持
    3. PDO MYSQL 需要 pdo 扩展支持 [支持读写分离]
    4. PDO PostgreSQL 需要 pdo 扩展支持 [支持读写分离]
    5. 需要其他数据库支持,实现对应接口或邮件我.

基本的使用示例代码

需要更详细方法参考代码及代码注释

//得到数据库单例
$db =Database::instance();
//得到完整表名
$table_name=$db->quote_table("order");
提示
  1. 为了防止SQL 注入,请使用预编译SQL进行数据库操作
  2. 对于MYSQLI 和 PDO 的预编译的接口做了统一,保持一致调用
  3. 如果你更喜欢相对老式的SQL语句操作,请参考 : /dome/base.php 的示例
  4. 示例用的表在 /dome/test_db.sql 中,需测试示例,请先导入并配置 /dome/config/database.php
预编译SQL使用示例
//------------------------------------查询---------------------------------------
$prepare=$db->prepare(Database::DQL, "select * from {$table_name} where sn=:sn");
$prepare->bindValue("sn",'SN001');
//OR 多个绑定
//$prepare->bindValue(array("sn"=>"SN001"));
$result=$prepare->execute();
//$result 和 db->query 返回保持一致
//$result->set_fetch_mode(Database::FETCH_OBJ);
foreach ($result as $v){
	print_r($v);
}
//------------------------------------插入-------------------------------------------
$sql="insert into {$table_name} (`sn`, `title`, `add_time`) values (:sn, :title, :add_time)";
//发送SQL 请求
$prepare=$db->prepare(Database::DML, $sql);
$prepare->bindValue(array(
	'sn'=>'SN001',
	'title'=>'title'.uniqid(),
	'add_time'=>time(),
));
if ($prepare->execute()){
	//成功
	echo $prepare->insert_id();//最后插入ID
	echo "\n";
	echo $prepare->affected_rows();//插入行数
	echo "\n";
}
//------------------------------------更新-------------------------------------------
$sql="update {$table_name} set title=:title where id=:id";
$prepare=$db->prepare(Database::DML, $sql);
$prepare->bindValue(array(
	'id'=>1,
	'title'=>'title'.uniqid(),
));
if ($prepare->execute()){
	//成功
	echo $prepare->affected_rows();//影响行数
	echo "\n";
}
//------------------------------------删除-------------------------------------------
$sql="delete from {$table_name} where id=:id";
$prepare=$db->prepare(Database::DML, $sql);
$prepare->bindValue(array(
	'id'=>3,
));
if ($prepare->execute()){
	//成功
	echo $prepare->affected_rows();//影响行数
	echo "\n";
}