自己做工具--封装一个DAO_PDO类
2017-03-23 14:52
302 查看
1.定义接口方法
文件:I_dao.interface.php
<?php
namespace framework\dao;
//接口用来约束一个类应该有哪些方法
//通常用来封装增删改查的方法
interface I_DAO
{
//查询所有数据的方法
public function getAll($sql='');
//查询一条记录的方法
public function getRow($sql='');
//查询一个字段的值
public function getOne($sql='');
//受影响的记录数
public function affectedRows();
//执行增、删、改操作的方法,通常返回成功与否
public function exec($sql='');
//查询刚刚执行插入操作返回的主键的值
public function lastInsertId();
//对外来数据进行引号转义、并引号包裹
public function quoteValue($data);
}
2.继承接口并实现这些方法
文件:DaoPDO.class.php
<?php
namespace framework\dao;
use framework\dao\I_DAO;
use \PDO;
class DAOPDO implements I_DAO
{
//保证这个类只实例化一个对象,单例模式
//定义私有的静态属性来保存该对象
private static $instance;
private $pdo;
//私有的构造方法
private function __construct($options)
{
//初始化数据库服务器的信息
$this -> initOptions($options);
//初始化PDO对象
$this -> initPDO();
}
//初始化数据库服务器的配置
private function initOptions($options)
{
$this -> host = isset($options['host'])?$options['host']:'';
$this -> dbname = isset($options['dbname'])?$options['dbname']:'';
$this -> user = isset($options['user'])?$options['user']:'';
$this -> pass = isset($options['pass'])?$options['pass']:'';
$this -> port = isset($options['port'])?$options['port']:'';
$this -> charset = isset($options['charset'])?$options['charset']:'';
}
//初始化pdo对象
private function initPDO()
{
$dsn = "mysql:host=$this->host;dbname=$this->dbname;port=$this->port;charset=$this->charset";
$this -> pdo = new PDO($dsn,$this->user,$this->pass);
}
//私有的克隆方法
private function __clone()
{
}
//公共的静态方法实例化当前类的对象
public static function getSingleton($options)
{
if(!self::$instance instanceof self){
self::$instance = new self($options);
}
return self::$instance;
}
//查询所有数据的方法
public function getAll($sql='')
{
$pdo_statement = $this -> pdo -> query($sql);
//获得执行查询操作受影响的记录数
$this -> totalRows = $pdo_statement -> rowCount();
if($pdo_statement==false){
//说明sql有错误,输出错误信息
$error_info = $this -> pdo -> errorInfo();
$error_str = "SQL语句有错误,详细信息如下:<br>".$error_info[2];
echo $error_str;
return false;
}
return $pdo_statement -> fetchAll(PDO::FETCH_ASSOC);
}
//查询一条记录的方法
public function getRow($sql='')
{
$pdo_statement = $this -> pdo -> query($sql);
if($pdo_statement==false){
//说明sql有错误,输出错误信息
$error_info = $this -> pdo -> errorInfo();
$error_str = "SQL语句有错误,详细信息如下:<br>".$error_info[2];
echo $error_str;
return false;
}
return $pdo_statement -> fetch(PDO::FETCH_ASSOC);
}
//查询一个字段的值
public function getOne($sql='')
{
$pdo_statement = $this -> pdo -> query($sql);
if($pdo_statement==false){
//说明sql有错误,输出错误信息
$error_info = $this -> pdo -> errorInfo();
$error_str = "SQL语句有错误,详细信息如下:<br>".$error_info[2];
echo $error_str;
return false;
}
return $pdo_statement -> fetchColumn();
}
//受影响的记录数
public function affectedRows(){
//通常是用来获得查询语句返回的所有的结果数
return $this -> totalRows;
}
//执行增、删、改操作的方法,通常返回成功与否
public function exec($sql=''){
//返回执行成功、失败
$result = $this -> pdo -> exec($sql);
return $result;
}
//查询刚刚执行插入操作返回的主键的值
public function lastInsertId(){
return $this->pdo->lastInsertId();
}
//封装引号转义并包裹
public function quoteValue($data)
{
return $this->pdo->quote($data);
}
}
相关文章推荐
- 开源自己用python封装的一个Windows GUI(UI Automation)自动化工具,支持MFC,Windows Forms,WPF,Metro,Qt
- 自己做工具--用原生js封装一个AJAX插件
- swift-自己封装的一个网络工具
- 自己做工具--封装PHP的PDO类--单例模式
- 简单封装一个供自己使用的工具类
- 自己封装的一个Edittext工具,让其只能输入指定位数的小数,同时不大于指定数
- 分享一个自己利用学的IO流操作封装了一个小工具进行文件复制剪切和删除功能
- 自己封装的一个Java版图片工具,具备压缩,伸缩变换,透明处理,格式转换等功能.
- 分享一个小巧简单的基金查询工具(自己写的)
- 发一个自己用JS写的实用看图工具
- [C#] 自己封装的一个数据库访问类 让ado.net 用起来和ado一样
- 发一个自己用JS写的实用看图工具
- 发一个自己用JS写的实用看图工具实现代码
- 自己封装的一个文件目录操作用户对象
- 自己封装了一个取得电脑信息及关机相关操作的类
- 发一个自己用JS写的实用看图工具
- [C#] 自己封装的一个数据库访问类 让ado.net 用起来和ado一样
- 非要自己开发一个测试工具不可?
- 蛙蛙推荐:自己做一个抓包工具(类库是用的别人的)
- 自己开发的一个非常粗糙的HTML格式化工具