首页 > 语言 > PHP > 正文

PDO操作MySql类分享

2024-09-04 11:44:15
字体:
来源:转载
供稿:网友

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表