php PDO操作类

<?php
/*//pdo连接信息
$pdo=array("mysql:host=localhost;dbname=demo;charset=utf8","root","");
//开始连接数据库
$db = Mysql::newClass();
$db->pdoConnect($pdo);

$updateRow = array(
    "user_id" => "2",
    "meta_key" => "username"
);

//$db->select("wp_usermeta"); //发送sql
//$result=$db->selectOne(); //获取一条数据
//$db->selectCount(); //获取全部

//$db->update("wp_usermeta",$updateRow,"umeta_id=1"); //更新信息
//$db->insert("wp_usermeta",$updateRow); //插入数据
//echo $db->lastinsertid(); //获取插入后的id
//$db->delete("wp_usermeta","umeta_id>18"); //删除数据*/

class Mysql
{
    private static $object;
    private $PDO;
    private $prepare;

    /////单例模式 start
    private function __construct()
    {
    }

    public static function newClass()
    {
        if(!(self::$object instanceof self))
        {
            self::$object = new self;
        }
        return self::$object;
    }

    public function __clone(){
        trigger_error(‘Clone is not allow!‘,E_USER_ERROR);
    }
    //////单例模式 end

    //连接pdo
    public function pdoConnect($address)
    {
        try{
            $this->PDO =  new PDO($address[0],$address[1],$address[2]);
            $this->PDO->setAttribute(PDO::ATTR_PERSISTENT,true);
            //设置抛出错误
            $this->PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
            //设置当字符串为空时转换为sql的null
            $this->PDO->setAttribute(PDO::ATTR_ORACLE_NULLS,true);
            //由MySQL完成变量的转义处理
            $this->PDO->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        }catch (PDOException $e)
        {
            $this->Msg("PDO连接错误信息:".$e->getMessage());
        }
    }

    //错误提示
    private function Msg($the_error=""){
        $html="<html>
                  <head>
                    <meta http-equiv=‘Content-Type‘ content=‘text/html; charset=UTF-8‘/>
                    <title>mysql error</title>
                  </head>
                  <body>
                    <div style=‘width: 50%; height: 200px; border: 1px solid red; font-size: 12px;‘>
                       $the_error
                    </div>
                  </body>
               </html>
               ";
        echo $html;
        exit;
    }

    /*
     *
     * insert,delete,update操作
     *
     * */
    public function insert($table,$row)
    {
       $sql=$this->sqlCreate("insert",$table,$row);
       $result = $this->sqlExec($sql);
    }

    public function update($table,$row,$where)
    {
        $sql=$this->sqlCreate("update",$table,$row,$where);
        $result = $this->sqlExec($sql);
    }

    public function delete($table,$where)
    {
        $sql=$this->sqlCreate("delete",$table,"",$where);
        $result = $this->sqlExec($sql);
    }

    //服务与insert,update,delete,生成sql
    private function sqlCreate($action,$table,$row="",$where="")
    {
        $actionArr = array(
            "insert" => "insert into ",
            "update" => "update ",
            "delete" => "delete from "
        );
        $row = empty($row) ? "": $this->rowCreate($row);
        $where = empty($where) ? "":" where ".$where;
        $sql = $actionArr[$action].$table.$row.$where;
        return $sql;
    }

    //拼成row
    private function rowCreate($row)
    {
       $sql_row=" set";
       foreach($row as $key=>$val)
       {
          $sql_row.=" ".$key."=‘".$val."‘,";
       }
       return trim($sql_row,",");
    }

    //执行sql,返还影响行数
    private function sqlExec($sql)
    {
         try{
              $result=$this->PDO->exec($sql);
          }catch (PDOException $e)
          {
              $this->Msg($e->getMessage());
          }
         return $result;
    }

    //获取insert插入的id
    public function lastinsertid()
    {
       return $this->PDO->lastinsertid();
    }

  /*
   *
   * select 部分
   * */
    public function select($table,$fields="", $where="",$orderby="", $sort="",$limit="")
    {
        $fields = empty($fields) ? "*":$fields;
        $sqlSelect=$this->sqlCreateSelect($table,$fields,$where,$orderby,$sort,$limit);
        $this->query($sqlSelect,$where);
    }

    //生成select sql
    private  function sqlCreateSelect($table,$fields="*", $where="",$orderby="", $sort="",$limit="")
    {
        $whereSql = empty($where)? " 1=1 ":$this->whereCreate($where);
        $orderbySql = empty($orderby)? "":" order by ".$orderby." ".$sort;
        $limitSql = empty($limit)? "":" limit ".$limit;
        $sql="select $fields from $table where ".$whereSql.$orderbySql.$limitSql;
        return $sql;
    }

    private function whereCreate($where)
    {
      $whereSql="";
      foreach($where as $key=>$val)
      {
         $whereSql.=" ".$key."=:".$key." and";
      }
      return $whereSql." 1=1 ";
    }

    //执行select sql
    private function query($sql,$where)
    {
       try{
           $this->prepare = $this->PDO->prepare($sql);

       }catch (PDOException $e)
       {
           $this->Msg("预处理sql出错信息:".$e->getMessage()."<br>sql:(".$sql.")");
       }
       empty($where)? "":$this->bind($where);
       $this->prepare ->execute();
    }
    private function bind($where)
    {
        foreach($where as $key=>$val)
        {
            $this->prepare->bindValue(":".$key,$val);
        }
    }

    /*select获取数据*/
    //获取一条
    public function selectOne()
    {
        $result=$this->prepare->fetch(PDO::FETCH_ASSOC);
        return $result;
    }
    //获取全部数据
    public function selectAll()
    {
        $result=$this->prepare->fetchAll(PDO::FETCH_ASSOC);
        return $result;
    }
     //获取查询记录数
    public function selectCount()
    {
        $total = $this->prepare->rowCount();
        return $total;
    }

}

  

时间: 2024-09-10 07:03:09

php PDO操作类的相关文章

PDO数据库操作类

1 <?php 2 include 'common_config.php'; 3 4 /** 5 * Class Mysql 6 * PDO数据库操作类 7 */ 8 class Mysql { 9 protected static $_dbh = null; //静态属性,所有数据库实例共用,避免重复连接数据库 10 protected $_dbType = DB_TYPE; 11 protected $_pconnect = false; //是否使用长连接 12 protected $_h

php pdo mysql数据库操作类

原文:php pdo mysql数据库操作类 findAll(array( 'field'=>'ID,albumName,albumImage, mainActor,directors,tags,info,area, keywords,wflag,year,mod_version,totalDuration', 'where'=>$where, 'order'=>'flag desc,hit_count desc', 'limit'=>"{$limit['offset']

封装的 PDO 操作数据库 的帮助类 MySqlHelper

封装的 PDO 操作数据库 的帮助类 MySqlHelper 封装的 PDO 操作数据库 的帮助类 MySqlHelper ,仅供学习交流使用! <?php /** * Description of MySqlHelper * * @author fx678 */ class MySqlHelper { private static $pdoDB = null; public function __destruct() { $this->pdoDB = null; } /** * 获取ini配

PHP PDO操作MYSQL

PHP PDO操作MYSQL 学习要点: 1.        PHP PDO配置 2.        连接mysql及异常处理 3.        query,exec用法详解 4.        预处理prepare()用法详解 5.        PDO错误处理模式和事务处理 6.        获取和遍历结果集 7.        常用函数说明   我的博客:http://www.unitbuy.com PDO配置 PHP 数据对象 (PDO) 扩展可以支持绝大多数的主流的数据库,如下 C

ASP.net如何保证EF操作类线程内唯一

说到线程内唯一,肯定会想到单例模式,但是如果多用户访问网站就会出现问题.ASP.net中有两种方法可以保证EF操作类线程内唯一(目前只会这两种,以后有好的方法再添加): 1.httpcontext(实现原理也是通过数据槽callcontext) 将EF操作类通过键值对方法保存在HttpContext.Current.Items["key"],封装成方法直接调用 2.callcontext public static DbContext CreateDbContext() { DbCon

反射之操作类,方法,属性等

1.操作类 获取类,并通过反射获取一个实例对象 Class class1 = Student.class; Student student = (Student)class1.newInstance();   //默认调用无参数的构造方法 student.setName("heh"); System.out.println(student.getName()); 2.操作构造方法   获取指定参数类型的构造方法,通过此对象创建一个特定参数值的实例对象 Class class1 = St

Android打造属于自己的数据库操作类。

1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要去做增删改查的操作的时候,就得通过getWritableDatabase获取一个SQLiteDataBase然后老老实实去写操作值的put以及查询返回的Cursor处理,其实我们可以搞一个对象来帮我们干这些事情,打造属于你自己的数据库操作类. 2.操作类的初显形 假设现在我们什么都没有,我们要去搞一

使用RedisTemplate的操作类访问Redis(转载)

原文地址:http://www.cnblogs.com/luochengqiuse/p/4641256.html private ValueOperations<K, V> valueOps; private ListOperations<K, V> listOps; private SetOperations<K, V> setOps; private ZSetOperations<K, V> zSetOps; 1. RedisOperations接口说明

php 的mysql操作类

亲自测试,网上其他版本没法用,有很多错误,这是本人亲自测试用的,绝对增删改查都可以. <?php /** * Created by Netbeans. * User: Lugo * Date: 16-7-14 * Version: 1.0.0 * Time: 上午10:50 */ class MysqlHelper { const HOST="localhost"; const DATABASE = "demo"; const ENCODING = "