yaf框架封装简单的pdo类

<?php
/**

  • Created by PhpStorm.
  • User: Administrator
  • Date: 2017/7/24
  • Time: 14:03
    */
    /*
     
    数据库PDO操作
     */
    class pdo {
    private function Link(){
    $config=Yaf_Application::app()->getConfig();
    try{
    $PDO=new PDO($config[‘mysql‘][‘dsn‘],$config[‘mysql‘][‘user‘],$config[‘mysql‘][‘pass‘]);
    return $PDO;
    }
    catch (Exception $e){
    echo $e->getMessage();
    }
    }
    //查询单条数据
    public function quOne($sql,$term=‘‘){
    $PDO=$this->Link();
    try{
    $stmt = $PDO->prepare($sql);
    if(!empty($term)){
    foreach ($term as $key=>$value){
    $stmt->bindParam($key, $value, PDO::PARAM_STR);
    }
    }
    $stmt->execute();
    return $stmt->fetch(PDO::FETCH_ASSOC);
    } // if there is a problem we can handle it here
    catch (Exception $e) {
    echo $e->getMessage();
    }
    }
    //查询所有数据
    public function quAll($sql,$term=‘‘){
    $PDO=$this->Link();
    try{
    $stmt = $PDO->prepare($sql);
    if(!empty($term)){
    foreach ($term as $key=>$value){
    $stmt->bindParam($key, $value, PDO::PARAM_STR);
    }
    }
    $stmt->execute();
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
    } // if there is a problem we can handle it here
    catch (Exception $e) {
    echo $e->getMessage();
    }
    }
    //插入单条数据
    public function inOne($name,$data,$id="",$statc=true){
    if(!$statc){
    return false;
    }
    if(!is_array($data)){
    return false;
    }
    $PDO=$this->Link();
    foreach ($data as $key=>$value){
    $keys[]=$key;
    $values[]=$value;
    }
    $sql="insert into ".$name." (";
    $sql.=implode(",",$keys);
    $sql.=",_str";
    $sql.=") values (";
    $sql.implode(",",$values);
    $_str=time().$this->getrandstr();
    $sql.=",‘$_str‘";
    $sql.=" )";
    try{
    $stmt = $PDO->prepare($sql);
    $stmt->beginTransaction();
    $stmt->execute();
    if(empty($id)){
    return true;
    }
    $insql="select $id from $name where _str = ‘$_str‘";
    $InsertId = $PDO->prepare($insql);
    $InsertId->execute();
    return $InsertId->fetch(PDO::FETCH_ASSOC);
    } // if there is a problem we can handle it here
    catch (Exception $e) {
    $PDO->rollBack();
    return false;
    }

    }
    //插入多条语句
    public function inAll($name,$data,$id="",$statc=true){
    if(!$statc){
    return false;
    }
    if(!is_array($data)){
    return false;
    }
    $PDO=$this->Link();
    $valueStr=‘‘;
    foreach ($data as $key=>$value){
    if(!is_array($value)){
    return false;
    }
    $values=‘‘;
    $keys=‘‘;
    $valueStr.="(";
    foreach ($value as $k=>$v){
    $values[]=$v;
    $keys[]=$k;
    }
    $_str=time().$this->getrandstr();
    $_strs[]=$_str;
    $keys[]="_str";
    $values[]=$_str;
    $valueStr.=implode(",",$values).")";
    }
    $sql="insert into ".$name." (";
    $sql.=implode(",",$keys);
    $sql.=",_str";
    $sql.=") values ".$valueStr;
    try{
    $PDO->beginTransaction();
    $stmt = $PDO->prepare($sql);
    $stmt->execute();
    if(empty($id)){
    return true;
    }
    $_strTerm=implode($_str);
    $insql="select $id from $name where _str in ($_strTerm)";
    $InsertId = $PDO->prepare($insql);
    $InsertId->execute();
    return $InsertId->fetchAll(PDO::FETCH_ASSOC);
    } // if there is a problem we can handle it here
    catch (Exception $e) {
    $PDO->rollBack();
    return false;
    }
    }
    //删除
    public function Del ($sql,$statc=true){
    if(!$statc){
    return false;
    }
    $PDO=$this->Link();
    try{
    $PDO->beginTransaction();
    $stmt = $PDO->prepare($sql);
    if(!empty($term)){
    foreach ($term as $key=>$value){
    $stmt->bindParam($key, $value, PDO::PARAM_STR);
    }
    }
    $stmt->execute();
    return true;
    } // if there is a problem we can handle it here
    catch (Exception $e) {
    $PDO->rollBack();
    return false;
    }
    }
    //修改
    public function Update ($sql,$statc=true){
    if(!$statc){
    return false;
    }
    $PDO=$this->Link();
    try{
    $PDO->beginTransaction();
    $stmt = $PDO->prepare($sql);
    if(!empty($term)){
    foreach ($term as $key=>$value){
    $stmt->bindParam($key, $value, PDO::PARAM_STR);
    }
    }
    $stmt->execute();
    return true;
    } // if there is a problem we can handle it here
    catch (Exception $e) {
    $PDO->rollBack();
    return false;
    }
    }
    //获取随机字符
    private function getrandstr(){
    $str=‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890‘;
    $randStr = str_shuffle($str);//打乱字符串
    $rands= substr($randStr,0,6);//substr(string,start,length);返回字符串的一部分
    return $rands;
    }
    }

原文地址:http://blog.51cto.com/13346331/2133017

时间: 2024-11-09 05:45:05

yaf框架封装简单的pdo类的相关文章

封装好的PDO类

封装PDO类,方便使用: <?php header('content-type:text/html;charset=utf-8'); /** * 封装PDODB类 */ // 加载接口 // include './I_DB.interface.php'; class PDODB{ /** * 定义相关属性 */ private $host; //主机地址 private $port; //端口号 private $user; //用户名 private $pass; //密码 private $

[PHP] Yaf框架的简单安装使用

PHP开发组鸟哥惠新宸开发的php扩展框架 安装 windows下载扩展:https://pecl.php.net/package/yaf/2.2.9/windows 根据自己的电脑系统和php的版本号选择,NTS是线程不安全,TS是线程安全 根据phpinfo(),选择是否是线程安全 把php_yaf.dll扩展放到ext目录下 重启apache 使用 新建目录public,新建文件index.php入口文件 <?php define("APP_PATH", realpath(

20150113--PDO增删改查+封装PDO类

回顾 方法重写:是因为对象的访问会先去子类的类空间找,从而形成了对父类的覆盖. 继承链:类只能单继承,但是可以通过继承链来实现多继承 特殊类:final类和抽象类 接口:interface PHP重载:当访问一个权限不够或者不存在的属性或者方法的时候,会自动触发的魔术方法. 属性重载和方法重载 对象的保存和还原:serialize和unserialize(对应的类已经在内存:如果有资源属性必须进行重新加载资源),魔术方法(__sleep和__wakeup) 对象遍历:默认只能遍历public属性

Android中网络框架的简单封装

个人博客 http://www.milovetingting.cn Android中网络框架的简单封装 前言 Android作为一款主要应用在移动终端的操作系统,访问网络是必不可少的功能.访问网络,最基本的接口有:HttpUrlConnection,HttpClient,而在后续的发展中,出现了Volley,OkHttp,Retrofit等网络封装库.由于各种原因,在实际的项目开发中,我们可能会需要在项目的版本迭代中,切换网络框架.如果对于网络框架没有好的封装,那么当需要切换网络框架时,可能就会

Python+Selenium进阶版(八)- Python自定义封装一个简单的Log类

目标:如何写一个Python日志类,用来输出不同级别的日志信息到本地文件夹下的日志文件里. 练习场景: 我们需要封装一个简单的日志类,主要有以下内容: 1.生成的日志文件格式是 年月日分秒.log 2.生成的XXX.log文件存储在项目根目录下Logs文件夹下 3.这个日志类,支持INFO,ERROR两种日志级别 4.日志里,每行日志输出,时间日期+执行类名称+日志级别+日志描述 解决思路: 1.在根目录下新建一个Logs的文件夹,获取这个Log的相对路径: 2.日志的保存命名,需要系统时间:

简单封装 Delphi 的 DirectX类

[delphi] view plain copy var CreatorRenderer  : TCreatorRenderer; Form1: TForm1; 窗体代码: [delphi] view plain copy {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin // 创建 CreatorRenderer := TCreatorRenderer.Create(); CreatorRenderer.CreateD

上门洗车APP --- Android客户端开发 之 网络框架封装(二)

上门洗车APP --- Android客户端开发 之 网络框架封装(二) 前几篇博文中给大家介绍了一下APP中的基本业务及开发本项目使用的网络架构: 上门洗车APP --- Android客户端开发 前言及业务简介 上门洗车APP --- Android客户端开发 之 网络框架封装介绍(一) 本篇接着给大家分享网络框架封装,相信感兴趣的朋友已经对上篇博文中的一些开源项目有了些许了解,这里继续为大家介绍关于GenericDataManager 通用网络管理类中的 dataRequest 方法 和

【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径(四)

目录: [SSH进阶之路]Struts基本原理 + 实现简单登录(二) [SSH进阶之路]一步步重构MVC实现Struts框架--从一个简单MVC开始(三) [SSH进阶之路]一步步重构MVC实现Struts框架--封装业务逻辑和跳转路径(四) [SSH进阶之路]一步步重构MVC实现Struts框架--彻底去掉逻辑判断(五) [SSH进阶之路]一步步重构MVC实现Struts框架--完善转向页面,大功告成(六) Struts的第二篇博客[SSH进阶之路]Struts基本原理 + 实现简单登录(二

Retrofit源码分析以及MVP框架封装使用

阅读此文前请先阅读Retrofit+okhttp网络框架介绍 从上文中我们已经了解通过如下代码即可得到返回给我们call 以及 response对象,今天我们通过源码来分析这个过程是如何实现的. /** * 获取天气数据 * @param cityname * @param key * @return */ @GET("/weather/index") Call<WeatherData> getWeatherData(@Query("format") S