php PDO mysql

<?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 ;
     }
 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值