EasyDB

PHP 数据库操作类
授权协议 未知
开发语言 PHP
所属分类 程序开发、 ORM/持久层框架
软件类型 开源软件
地区 国产
投 递 者 端木冷勋
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

EasyDB是一个基于PDO的数据库操作类,它使用了PDO的精髓--预编译--的思想,从而在根源上杜绝SQL注入的危险。
现在网上的大多数据库封装类,甚至一些知名的框架都仅仅只是包装一下数据库的操作,内部还是使用拼装字符串的方式执行语句!
这也太LOW了!而且为了防止SQL注入,还为此增加了超多的格式验证和数据过滤,验证影响代码维护和执行的效率。
而EasyDB是优雅的,它继承自PDO,没有破坏PDO的任何方法,只是在此基础上增加一些易于使用操作方法和简单的链式操作,
它的的设计初衷就是完善和简化MySQL等数据库的相关操作。引入它,你仍可以直接像使用PDO那样使用它。


##使用方法##
在你的项目中引入EasyDB.php文件之后,你就可以像这样使用

$config = array(
 'host' => '127.0.0.1',//数据库连接ip,默认本机
 'port' => 3306,//端口号,默认3306
 'username' => 'root',//用户名,默认root
 'password' => '',//密码,默认空
 'dbname' => 'test',//数据库名字
 'charset' => 'utf8'//字符集,默认utf8
);
$db = new EasyDB($config);
$sql = 'select * from table where id = ?';
$result = $db->queryOne($sql, array(2));
好的,你现在就已经获取到你想要的结果了!同样,您也可以这样写:
$db = new EasyDB($config);
$sql = 'select * from table where id = :id';
$array = array(
      ':id' => 2
);
$result = $db->queryOne($sql, $array);


我强烈建议你不要在直接用变量拼装SQL语句,这是危险和不明智的,因为已经有PDO预编译这么好的机制,为什么不用它呢?就像上面的例子,用它是不是很简单。

除了常用的增删改查方法,EasyDB还封装了一些简单的链式操作,注意:这里只是一些简单的链式操作,对于复杂的语句还是执行SQL语句来的痛快。
$db = new EasyDB();
$db->table_select('table')->field('name')->where('id=?')->go(array(2));
是的。链式操作就是这么简单。


###使用手册##
提示:一般 在SQL语句中使用了占位符,那么紧接着就应该传入一个绑定数组,如:
例1:
$sql = 'select * from my';
$result = $db->queryOne($sql);//因为SQL语句中没有占位符,所以只需要传入$sql参数即可
例2:
$sql = 'select * from my where id=?';
$result = $db->queryOne($sql, array(4));//这里的第二个参数array(4)就是将数组中的值4传给之前占位的?
例3:
$sql = 'select * from my where name=? and age=?';
$result = $db->queryOne($sql, array('blue', 18));//这里的第二个参数array('blue', 18)的值分别对应SQL语句中的两个?
例4:
$sql = 'select * from my where name=:name and age=:age';
$data = array(
':name' => 'blue',
':age'  => '18
);
$result = $db->queryOne($sql, $data);//这是另外一种占位方式


如果你是手写SQL党,对于查询(select)可以这样使用:
例1:
$sql = 'select * from my where id=?';
$result = $db->queryOne($sql, array(4));
例2:
$sql = 'select * from my';
$result = $db->queryAll($sql);
其中queryOne()返回一维数组(即一条记录),queryAll()返回二维数组(即多条记录)

对于/insert/delete/update,可以这样使用:
例1:
$sql = 'insert into table set name=? , age=?';
$db->querySql($sql, array('blue', 18));
例2:
$sql = 'update table where id=?';
$db->querySql($sql, array(4));
一些复杂的语句,可以直接这样使用:
$sql = '....';//复杂的语句
$stmt = $db->queryObj($sql);//这里会返回一个SQL语句对象
然后就可以执行一些操作,如 $stmt->rowCount();
再次提醒: EasyDB是直接继承于PDO的,所以就算EasyDB不能满足你的使用,直接用PDO的方法是完全可以的。


如果你喜欢简化的方式使用SQL,那就可以这样:
对于select:
$data = array(
':name' => 'blue',
':age'  => '18
);
$db->table_select('table')->where('name=:name and age=:age')->go($data);//对于查询,使用链式的方式
对于insert:
$data = array(
'name' => 'blue',
'age'  => '18
);
$db->insert('table', $data);//$data中的键为数据库字段名,值为对应的数值
对于delete:
$where = array(       
'name' => 'blue',
'age'  => '18
);
$db->delete('table', $where);//$where之间的关系为and
对于update:
$where = array(
'id' => 4
);
$data = array(
'name' => 'blue',
'age'  => '18
);
$db->update('table', $data, $where);//$where之间的关系为and
如果insert/update/delete的条件比较复杂,可以使用链式方式,如:
$data = array(
':name' => 'blue',
':age'  => '18,
':source' => 100
);
$db->table_update('table')->where('name=:name or age=:age')->setdata('source=:source')->go($data);

另外EasyDB还独立了一个方法,count(),用于计算条目总数,如:
$db->count('table');//table表的总条目
$db->count('table', 'age=?' , array(18));//符合条件的总条目

好了,具体的一些方法大家可以直接看源码,我在其中都有注释,如果有什么问题可以直接微博@deng-dev (http://weibo.com/fensiyun)


  • 软件简介 EasyDB是一个基于PDO的数据库操作类,它使用了PDO的精髓–预编译–的思想,从而在根源上杜绝SQL注入的危险。 现在网上的大多数据库封装类,甚至一些知名的框架都仅仅只是包装一下数据库的操作,内部还是使用拼装字符串的方式执行语句! 这也太LOW了!而且为了防止SQL注入,还为此增加了超多的格式验证和数据过滤,验证影响代码维护和执行的效率。 而EasyDB是优雅的,它继承自PDO,没有

  • /* * Create 2015.06.27 20:25 * Author: dengsgo * Email: deng@fensiyun.com */ class EasyDB extends PDO{ private $db_config ;//数据库配置 private $lastsql = '';//最后一次执行的sql语句 private $fetch_type = PDO::FETCH

 相关资料
  • 数据库的操作是每个phpweb框架的核心功能,我们提供数据库数据库的标准调用模式为: 你可以执行严格模式,也就是左边的那条线,Controller->Service->Dao->Model->DB,也可以走简单模式 Controller->Model->DB。个人根据自己的需求,走标准麻烦些(几乎所有的机构和系统都是这样^_^), 但是扩展性会好些,但是使用简单模式开发效率就会高些,性能会好些,但

  • 这一小节是对数据库操作做一个简单的封装,不涉及复杂的事务操作等。 我选用了Sql2o作为底层数据库框架作为支持,它的简洁易用性让我刮目相看,后面我们也会写如何实现一个ORM框架。 /** * 数据库支持 * @author biezhi * */ public final class MarioDb { private static Sql2o sql2o = null;

  • NoSQL(Not Only SQL),指的是非关系型的数据库。随着Web2.0的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。 而Go语言作为21世纪的C语言,对NOSQL的支持也是很好,目前流行的NOSQL主要有redis、mongoD

  • 由于我们的框架目前只支持使用mysql,如果使用其他数据库,则不建议使用本框架。本节将介绍如何读取mysql数据库中的数据。 首先需要修改配置文件 App1/Config/Config.php   //默认Mysql数据库 'default_mysql_config' => 'mysql', //Mysql1数据库配置 'mysql' => array( 'host'  => 'localhost

  • phpGrace Db 概述 phpgrace db 操作类以pdo为基础、全面采用预处理机制、最大程度保证了数据操作的安全性。采用了单利模式,保证一库一连、一表一对象!为高效开发提供了基础。 大部分的数据操作都无需编写复杂的sql命令,简单配置即可。 准备工作:数据库信息配置 使用数据库操作前,请打开保证数据库配置正确!具体操作见上一节 ^_^ 数据操作详解 下文将以数据表 persons为例,

  • 创建表 查看表结构 查看表详细结构 修改表名 修改字段的数据类型 修改字段名 增加字段 删除字段 删除关联表 (1)删除表的外键约束 (2)删除没有被关联的普通表 (3)删除被其他表关联的父表 创建表: CREATE TABLE 表名 (属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件]) “完整性约束条件”是指指定某些字段的某些特

  • 本文向大家介绍Python对数据库操作,包括了Python对数据库操作的使用技巧和注意事项,需要的朋友参考一下 Windows下安装MySQL-python 下载地址:https://pypi.python.org/pypi/MySQL-python/1.2.5 安装到系统即可。 linux下安装MySQL-python以连接MySQL: 下载地址:https://pypi.python.org/

  • 本文向大家介绍python操作mysql数据库,包括了python操作mysql数据库的使用技巧和注意事项,需要的朋友参考一下 一、数据库基本操作 1. 想允许在数据库写中文,可在创建数据库时用下面命令 create database zcl charset utf8; 2. 查看students表结构 desc students; 3. 查看创建students表结构的语句 show creat