好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PDO操作MySql类分享 - php类库

PDO操作MySql类分享

为了让自己的数据类能够做到最大化的重用,就写个能够重用的PDO操作MySql的类,由于pdo可以连接现在流行的各种数据库,所以单独的写个配置类类来完成不同数据库DSN的配置,PDO操作MYSQL类代码如下:

<?php  /**    * 类标准说明    PDO连接数据库的配置类    * 类名:     ConfigDataBase    * 功能说明:    为了让代码重用,利用此类可以动态的连接各种数据库    * 参数说明:    $_dbms = "mysql教程";    //数据库类型     *         $_host = '127.0.0.1';     //数据库ip地址    *         $_port = '3306';     //数据库端口    *         $_username = 'root';    //数据库用户名    *        $_password = 'liujijun';   //密码    *         $_dbname = 'zendf';        //数据库名 默认为zenf    *         $_charset = 'utf-8';       //数据库字符编码    *         $_dsn;//                    //data soruce name 数据源    *    *    * 类属性说明:    * 类方法说明:    * 返回值:     不同函数返回不同的值    * 备注说明:    * 作者:       刘纪君    * 最后一次修改时间:    2011下午02:01:39    *    */   class  ConfigDataBase {        protected   static  $_dbms =  "mysql" ;     //数据库类型         protected   static  $_host =  '127.0.0.1' ;      //数据库ip地址        protected   static  $_port =  '3306' ;      //数据库端口        protected   static  $_username =  'root' ;     //数据库用户名        protected   static  $_password =  'liujijun' ;    //密码        protected   static  $_dbname =  'zendf' ;         //数据库名 默认为zenf        protected   static  $_charset =  'utf-8' ;        //数据库字符编码        protected   static  $_dsn; //                    //data soruce name 数据源        /**     *@return   返回数据源名     */     public   static   function  getDsn() {     //将变量的值组合成  mysql:host=localhost;port =3306;dbname=test',$login,$passwd的形式      if  (!isset(self::$_dsn)){      self::$_dsn = self::$_dbms. ':host = ' .self::$_host. ';prot = ' .      self::$_port .  ';dbname = '  . self::$_dbname. ',' .      self::$_username .  ',' .self::$_password;           if  (strlen(self::$_charset) > 0){       self::$_dsn = self::$_dsn .  ';charset = '  . self::$_charset;      }    }     return  self::$_dsn; //返回数据源名    }       /**     * 功能:设置$dbms     * @param $dbms     */     public   static   function  setDbms($dbms){     if  (isset($dbms) &&(strlen($dbms) > 0 )){     self::$_dbms = trim($dbms);    }    }       /**     *     * @param  $host  //数据库地址     */     public   static   function  setHost($host){     if  (isset($host) &&(strlen($host) > 0 )){     self::$_host = trim($host);    }   }      /**     *     * @param $host 端口号     */     public   static   function  setPort($port){     if  (isset($port) &&(strlen($port) > 0 )){     self::$_post = trim($port);    } //开源代码phpfensi测试数据    }       /**     *     * @param  $passwd 密码     */     public   static   function  setPasswd($passwd){     if  (isset($passwd) &&(strlen($passwd) > 0 )){     self::$_password = trim($passwd);    }   }       /**     *     * @param  $username 用户名     */     public   static   function  setUsernName($username){      if  (isset($username) &&(strlen($username) > 0 )){      self::$_username = trim($username);     }    }       /**     *     * @param  $dbname 数据库名     */     public   static   function  setDbName($dbname){      if  (isset($dbname) &&(strlen($dbname) > 0 )){      self::$_dbname = trim($dbname);     }    }           /**      *      * @param  $charset 数据库编码      */     public   static   function  setCharset($charset){      if  (isset($charset) &&(strlen($charset) > 0 )){      self::$_charset = trim($charset);     }    }  }    下面是对数据库的操作:         <?php    require_once  'ConfigDataBase.php' ;  header( "Content-Type: text/html; charset=utf-8" ); //设置编码   /**    * 类标准说明    * 类名:      PdoMysql    * 功能说明:     对数据库进行各种操作    * 参数说明:    * 类属性说明:    * 类方法说明:    * 返回值:    * 备注说明:    * 作者:       刘纪君    * 最后一次修改时间:    2011上午10:45:36    *    */   class   PdoMysqlOperater{          /**     * @return 返回连接数据库的句柄     */     public   function  getConnection(){    $connection = NULL;     try  {     $connection =  new  PDO(ConfigDataBase::getDsn());     echo  'Success' ;    }  catch  (PDOException  $e) {     print  "Error in connection :" .$e->getMessage(). ' ' .die();    }     return  $connection;   }       /**     *     * @param  $connection    连接数据库的句柄     */     public   function  closeConnection($connection){     try  {      if  ($connection !=  null ) {      $connection =  null ; //关闭数据库连接句柄      }    }  catch  (Exception $e) {     print  'Close the connectin is error:' .$e->getMessage();    }       }       /**     * 功能:      向数据库中增加数据     * @param $sql      sql语句     */     public    function  insertDatabase($sql){    $affect =  false ; //失败返回false      try  {     $conn = $ this ->getConnection();     $conn->exec($sql);     $affect =  true ; //插入成功返回true      $ this ->closeConnection($conn); //关闭数据库     }  catch  (PDOException $e) {     print  'Insert error ' .$e->getMessage();    }     return  $affect; //返回值    }       /**     *     * @param $id      表的主键id     * @param $tableName    表名     */     public   function  deleltById($id,$tableName){    $affact =  false ;    $sql =  'delete from ' .trim($tableName). ' where id = ' .$id;     try  {     $conn = $ this ->getConnection();     $conn->exec($sql);     $ this ->closeConnection($conn);     $affact =  true ;    }  catch  (PDOException  $e) {     print  'Delelte error is ' .$e->getMessage();    }     return  $affact;   }       /**     * 功能:      以and 的形式删除记录     * @param $tableName    表的名称     * @param $array        数组表中字段名=其值的方式进行组合     */     public    function  prepareDeleteAnd($tableName,array $array= null ){    $sql =  'delete from ' . $tableName .  ' where ' ;    $count = count($array); //计算数组的长度     $flag = 0; //设置标记       foreach ($array as $key => $value){     $flag++; //让flag增加一      $sql .= $key . '=' . "'" .$value. "'" ;      if  ($flag != $count ){ //当falg不等于count时,数组还有值,后面增加and,反之不增加       $sql .=  ' and ' ;     }    }    echo  $sql; //测试sql语句的组合        try  {     $conn = $ this ->getConnection(); //获取连接      $conn->prepare($sql);     $ this ->closeConnection();    }  catch  (PDOException $e) {     print  'Delete error is ' .$e->getMessage();    }       }         /**     * 功能:         以or 的形式删除记录     * @param $tableName    表的名称     * @param $array        数组表中字段名=其值的方式进行组合     */     public    function  prepareDeleteOr($tableName,array $array= null ){       $sql =  'delete from ' . $tableName .  ' where ' ;    $count = count($array); //计算数组的长度     $flag = 0; //设置标记       foreach ($array as $key => $value){     $flag++; //让flag增加一      $sql .= $key . '=' . "'" .$value. "'" ;      if  ($flag != $count ){ //当falg不等于count时,数组还有值,后面增加and,反之不增加       $sql .=  ' or ' ;     }    }    echo  $sql; //测试sql语句的组合        try  {     $conn = $ this ->getConnection(); //获取连接      $stmt = $conn->prepare($sql);     $stmt->execute(); //执行      $ this ->closeConnection();    }  catch  (PDOException $e) {     print  'Delete error is ' .$e->getMessage();    }       }          /**     * 功能:      取得表中所有数据     * @param  $sql     sql语句     */     public   function  getAll($sql){        $result =  null ;     try  {     $conn = $ this ->getConnection();     $result = $conn->query($sql);     $ this ->closeConnection($conn);    }  catch  (PDOException $e) {     print  'GetAll error is ' .$e->getMessage();    }   }          /**     * 功能:更新数据表中的信息     * @param  $table      要更新的表名     * @param array $updateFiled    要更新的字段     * @param array $updateConditon 更新需要的条件     */     public   function  updateDataBase($table,array $updateFiled,array $updateConditon ){         $sql   =  'update from '  .$table . ' set ' ;         //对set字段进行赋值操作     $count = count($updateFiled); //获取要修改数组的长度     $flag  = 0; //设置标记为0     foreach ($updateFiled as $key => $value){     $flag++;     $sql .= $key . '=' . "'" .$value. "'" ;      if  ($flag != $count){      $sql .= ',' ;     }    }     //对where条件进行赋值     $countUpdateCondition = count($updateConditon); //获取要修改数组的长度     $flag  = 0; //设置标记为0     $sql .=  ' where ' ;    foreach ($updateConditon as $key => $value){     $flag++;     $sql .= $key . '=' . "'" .$value. "'" ;      if  ($flag != $countUpdateCondition){      $sql .= ' and ' ;     }    }     try  {     $conn = $ this ->getConnection();     $conn->exec($sql);     $ this ->closeConnection($conn);    }  catch  (PDOException $e) {     print  'Update error is :' .$e->getMessage();    }       }          /**     * 功能:      根据表和提高的查询条件进行查询     * 返回值:      返回结果集     * @param  $table    数据表名     * @param array $findCondition  查询条件     */     public   function  findData($table,array $findCondition){        $sql =  'select from ' .$table . ' where ' ;        $count = count($findCondition); //获取查询条件数组的长度     $flag  = 0; //设置标记为0     foreach ($findCondition as $key => $value){     $flag++;     $sql .= $key . '=' . "'" .$value. "'" ;      if  ($flag != $count){      $sql .= ' and ' ;     }    }     try  {      $conn = $ this ->getConnection();      $conn->exec($sql);      $ this ->closeConnection($conn);     }  catch  (PDOException $e) {      print  'find error is :' .$e->getMessage();     }         }  }  //测试     $db =  new  PdoMysqlOperater();  $db->findData( 'liujijun' ,array( 'name' => 'liujijun' , 'name1' => 'liujijun' ));  ?>

查看更多关于PDO操作MySql类分享 - php类库的详细内容...

  阅读:43次