php专区

 首页 > php专区 > PHP应用 > php类库 > PDO操作MySql类分享 - php类库

PDO操作MySql类分享 - php类库

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

PDO操作MySql类分享

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

  1. /** 
  2.  * 类标准说明    PDO连接数据库的配置类 
  3.  * 类名:     ConfigDataBase 
  4.  * 功能说明:    为了让代码重用,利用此类可以动态的连接各种数据库 
  5.  * 参数说明:    $_dbms = "mysql教程";    //数据库类型  
  6.  *         $_host = '127.0.0.1';     //数据库ip地址 
  7.  *         $_port = '3306';     //数据库端口 
  8.  *         $_username = 'root';    //数据库用户名 
  9.  *        $_password = 'liujijun';   //密码 
  10.  *         $_dbname = 'zendf';        //数据库名 默认为zenf 
  11.  *         $_charset = 'utf-8';       //数据库字符编码 
  12.  *         $_dsn;//                    //data soruce name 数据源 
  13.  * 
  14.  * 
  15.  * 类属性说明: 
  16.  * 类方法说明: 
  17.  * 返回值:     不同函数返回不同的值 
  18.  * 备注说明: 
  19.  * 作者:       刘纪君 
  20.  * 最后一次修改时间:    2011下午02:01:39 
  21.  * 
  22.  */ 
  23. class ConfigDataBase { 
  24.    
  25.  protected static $_dbms = "mysql";    //数据库类型  
  26.     protected static $_host = '127.0.0.1';     //数据库ip地址 
  27.     protected static $_port = '3306';     //数据库端口 
  28.     protected static $_username = 'root';    //数据库用户名 
  29.     protected static $_password = 'liujijun';   //密码 
  30.     protected static $_dbname = 'zendf';        //数据库名 默认为zenf 
  31.     protected static $_charset = 'utf-8';       //数据库字符编码 
  32.     protected static $_dsn;//                    //data soruce name 数据源 
  33.   
  34.  /** 
  35.   *@return   返回数据源名 
  36.   */ 
  37.  public static function getDsn() { 
  38.   //将变量的值组合成  mysql:host=localhost;port =3306;dbname=test',$login,$passwd的形式 
  39.   if (!isset(self::$_dsn)){ 
  40.     self::$_dsn = self::$_dbms.':host = '.self::$_host.';prot = '
  41.     self::$_port . ';dbname = ' . self::$_dbname.','
  42.     self::$_username . ','.self::$_password; 
  43.    
  44.     if (strlen(self::$_charset) > 0){ 
  45.      self::$_dsn = self::$_dsn . ';charset = ' . self::$_charset; 
  46.     } 
  47.   } 
  48.   return self::$_dsn;//返回数据源名 
  49.  } 
  50.   
  51.  /** 
  52.   * 功能:设置$dbms 
  53.   * @param $dbms 
  54.   */ 
  55.  public static function setDbms($dbms){ 
  56.   if (isset($dbms) &&(strlen($dbms) > 0 )){ 
  57.    self::$_dbms = trim($dbms); 
  58.   }  
  59.  } 
  60.   
  61.  /** 
  62.   * 
  63.   * @param  $host  //数据库地址 
  64.   */ 
  65.  public static function setHost($host){ 
  66.   if (isset($host) &&(strlen($host) > 0 )){ 
  67.    self::$_host = trim($host); 
  68.   } 
  69.  } 
  70.  
  71.  /** 
  72.   * 
  73.   * @param $host 端口号 
  74.   */ 
  75.  public static function setPort($port){ 
  76.   if (isset($port) &&(strlen($port) > 0 )){ 
  77.    self::$_post = trim($port); 
  78.   }//开源代码phpfensi.com 
  79.  } 
  80.   
  81.  /** 
  82.   * 
  83.   * @param  $passwd 密码 
  84.   */ 
  85.  public static function setPasswd($passwd){ 
  86.   if (isset($passwd) &&(strlen($passwd) > 0 )){ 
  87.    self::$_password = trim($passwd); 
  88.   } 
  89.  } 
  90.   
  91.  /** 
  92.   * 
  93.   * @param  $username 用户名 
  94.   */ 
  95.  public static function setUsernName($username){ 
  96.    if (isset($username) &&(strlen($username) > 0 )){ 
  97.     self::$_username = trim($username); 
  98.    } 
  99.   } 
  100.   
  101.  /** 
  102.   * 
  103.   * @param  $dbname 数据库名 
  104.   */ 
  105.  public static function setDbName($dbname){ 
  106.    if (isset($dbname) &&(strlen($dbname) > 0 )){ 
  107.     self::$_dbname = trim($dbname); 
  108.    } 
  109.   } 
  110.   
  111.   
  112.   /** 
  113.    * 
  114.    * @param  $charset 数据库编码 
  115.    */ 
  116.  public static function setCharset($charset){ 
  117.    if (isset($charset) &&(strlen($charset) > 0 )){ 
  118.     self::$_charset = trim($charset); 
  119.    } 
  120.   } 
  121.  
  122. 下面是对数据库的操作: 
  123.  
  124.   
  125.  
  126.  
  127. require_once 'ConfigDataBase.php'
  128. header("Content-Type: text/html; charset=utf-8");//设置编码 
  129. /** 
  130.  * 类标准说明 
  131.  * 类名:      PdoMysql 
  132.  * 功能说明:     对数据库进行各种操作 
  133.  * 参数说明: 
  134.  * 类属性说明: 
  135.  * 类方法说明: 
  136.  * 返回值: 
  137.  * 备注说明: 
  138.  * 作者:       刘纪君 
  139.  * 最后一次修改时间:    2011上午10:45:36 
  140.  * 
  141.  */ 
  142. class  PdoMysqlOperater{ 
  143.   
  144.   
  145.  /** 
  146.   * @return 返回连接数据库的句柄 
  147.   */ 
  148.  public function getConnection(){ 
  149.   $connection = NULL; 
  150.   try { 
  151.    $connection = new PDO(ConfigDataBase::getDsn()); 
  152.    echo 'Success'
  153.   } catch (PDOException  $e) { 
  154.    print "Error in connection :".$e->getMessage().' '.die(); 
  155.   } 
  156.   return $connection; 
  157.  } 
  158.   
  159.  /** 
  160.   * 
  161.   * @param  $connection    连接数据库的句柄 
  162.   */ 
  163.  public function closeConnection($connection){ 
  164.   try { 
  165.    if ($connection != null) { 
  166.     $connection = null;//关闭数据库连接句柄 
  167.    } 
  168.   } catch (Exception $e) { 
  169.    print 'Close the connectin is error:'.$e->getMessage(); 
  170.   } 
  171.    
  172.  } 
  173.   
  174.  /** 
  175.   * 功能:      向数据库中增加数据 
  176.   * @param $sql      sql语句 
  177.   */ 
  178.  public  function insertDatabase($sql){ 
  179.   $affect = false;//失败返回false 
  180.   try { 
  181.    $conn = $this->getConnection(); 
  182.    $conn->exec($sql); 
  183.    $affect = true;//插入成功返回true 
  184.    $this->closeConnection($conn);//关闭数据库 
  185.   } catch (PDOException $e) { 
  186.    print 'Insert error '.$e->getMessage(); 
  187.   } 
  188.   return $affect;//返回值 
  189.  } 
  190.   
  191.  /** 
  192.   * 
  193.   * @param $id      表的主键id 
  194.   * @param $tableName    表名 
  195.   */ 
  196.  public function deleltById($id,$tableName){ 
  197.   $affact = false
  198.   $sql = 'delete from '.trim($tableName).' where id = '.$id; 
  199.   try { 
  200.    $conn = $this->getConnection(); 
  201.    $conn->exec($sql); 
  202.    $this->closeConnection($conn); 
  203.    $affact = true
  204.   } catch (PDOException  $e) { 
  205.    print 'Delelte error is '.$e->getMessage(); 
  206.   } 
  207.   return $affact; 
  208.  } 
  209.   
  210.  /** 
  211.   * 功能:      以and 的形式删除记录 
  212.   * @param $tableName    表的名称 
  213.   * @param $array        数组表中字段名=其值的方式进行组合 
  214.   */ 
  215.  public  function prepareDeleteAnd($tableName,array $array=null){ 
  216.   $sql = 'delete from '. $tableName . ' where '
  217.   $count = count($array);//计算数组的长度 
  218.   $flag = 0;//设置标记 
  219.  
  220.   foreach ($array as $key => $value){ 
  221.    $flag++;//让flag增加一 
  222.    $sql .= $key .'='."'".$value."'"
  223.    if ($flag != $count ){//当falg不等于count时,数组还有值,后面增加and,反之不增加 
  224.     $sql .= ' and '
  225.    } 
  226.   } 
  227.   echo  $sql;//测试sql语句的组合   
  228.   try { 
  229.    $conn = $this->getConnection();//获取连接 
  230.    $conn->prepare($sql); 
  231.    $this->closeConnection(); 
  232.   } catch (PDOException $e) { 
  233.    print 'Delete error is '.$e->getMessage(); 
  234.   } 
  235.    
  236.  } 
  237.   
  238.  
  239.  /** 
  240.   * 功能:         以or 的形式删除记录 
  241.   * @param $tableName    表的名称 
  242.   * @param $array        数组表中字段名=其值的方式进行组合 
  243.   */ 
  244.  public  function prepareDeleteOr($tableName,array $array=null){ 
  245.   
  246.   $sql = 'delete from '. $tableName . ' where '
  247.   $count = count($array);//计算数组的长度 
  248.   $flag = 0;//设置标记 
  249.  
  250.   foreach ($array as $key => $value){ 
  251.    $flag++;//让flag增加一 
  252.    $sql .= $key .'='."'".$value."'"
  253.    if ($flag != $count ){//当falg不等于count时,数组还有值,后面增加and,反之不增加 
  254.     $sql .= ' or '
  255.    } 
  256.   } 
  257.   echo  $sql;//测试sql语句的组合   
  258.   try { 
  259.    $conn = $this->getConnection();//获取连接 
  260.    $stmt = $conn->prepare($sql); 
  261.    $stmt->execute();//执行 
  262.    $this->closeConnection(); 
  263.   } catch (PDOException $e) { 
  264.    print 'Delete error is '.$e->getMessage(); 
  265.   } 
  266.    
  267.  } 
  268.   
  269.   
  270.  /** 
  271.   * 功能:      取得表中所有数据 
  272.   * @param  $sql     sql语句 
  273.   */ 
  274.  public function getAll($sql){ 
  275.    
  276.   $result = null
  277.   try { 
  278.    $conn = $this->getConnection(); 
  279.    $result = $conn->query($sql); 
  280.    $this->closeConnection($conn); 
  281.   } catch (PDOException $e) { 
  282.    print 'GetAll error is '.$e->getMessage(); 
  283.   } 
  284.  } 
  285.   
  286.   
  287.  /** 
  288.   * 功能:更新数据表中的信息 
  289.   * @param  $table      要更新的表名 
  290.   * @param array $updateFiled    要更新的字段 
  291.   * @param array $updateConditon 更新需要的条件 
  292.   */ 
  293.  public function updateDataBase($table,array $updateFiled,array $updateConditon ){ 
  294.     
  295.   $sql   = 'update from ' .$table .' set '
  296.    
  297.   //对set字段进行赋值操作 
  298.   $count = count($updateFiled);//获取要修改数组的长度 
  299.   $flag  = 0;//设置标记为0 
  300.   foreach ($updateFiled as $key => $value){ 
  301.    $flag++; 
  302.    $sql .= $key .'='."'".$value."'"
  303.    if ($flag != $count){ 
  304.     $sql .=','
  305.    } 
  306.   } 
  307.   //对where条件进行赋值 
  308.   $countUpdateCondition = count($updateConditon);//获取要修改数组的长度 
  309.   $flag  = 0;//设置标记为0 
  310.   $sql .= ' where '
  311.   foreach ($updateConditon as $key => $value){ 
  312.    $flag++; 
  313.    $sql .= $key .'='."'".$value."'"
  314.    if ($flag != $countUpdateCondition){ 
  315.     $sql .=' and '
  316.    } 
  317.   } 
  318.   try { 
  319.    $conn = $this->getConnection(); 
  320.    $conn->exec($sql); 
  321.    $this->closeConnection($conn); 
  322.   } catch (PDOException $e) { 
  323.    print 'Update error is :'.$e->getMessage(); 
  324.   } 
  325.    
  326.  } 
  327.   
  328.   
  329.  /** 
  330.   * 功能:      根据表和提高的查询条件进行查询 
  331.   * 返回值:      返回结果集 
  332.   * @param  $table    数据表名 
  333.   * @param array $findCondition  查询条件 
  334.   */ 
  335.  public function findData($table,array $findCondition){ 
  336.    
  337.   $sql = 'select from '.$table .' where '
  338.    
  339.   $count = count($findCondition);//获取查询条件数组的长度 
  340.   $flag  = 0;//设置标记为0 
  341.   foreach ($findCondition as $key => $value){ 
  342.    $flag++; 
  343.    $sql .= $key .'='."'".$value."'"
  344.    if ($flag != $count){ 
  345.     $sql .=' and '
  346.    } 
  347.   } 
  348.   try { 
  349.     $conn = $this->getConnection(); 
  350.     $conn->exec($sql); 
  351.     $this->closeConnection($conn); 
  352.    } catch (PDOException $e) { 
  353.     print 'find error is :'.$e->getMessage(); 
  354.    } 
  355.     
  356.   } 
  357. //测试 
  358.  
  359. $db = new PdoMysqlOperater(); 
  360. $db->findData('liujijun',array('name'=>'liujijun','name1'=>'liujijun')); 
  361. ?>
分享到:
mysql数据库连接操作类 - php类库
mysql数据库连接操作类 分享一篇可以记录错误日志的mysql数据库连接类文件,实例代码如下:
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……