加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PDO操作MySql类共享

发布时间:2023-05-27 13:19:52 所属栏目:PHP教程 来源:
导读:为了让自己的数据类能够做到最大化的重用,就写个能够重用的PDO操作MySql的类,由于pdo可以连接现在流行的各种数据库,所以单独的写个配置类类来完成不同数据库DSN的配置,PDO操作MYSQL类代码如下:<?php /** * 类标准说

为了让自己的数据类能够做到最大化的重用,就写个能够重用的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); 

  }//开源代码Cuoxin.com 

 } 

 /** 

  * 

  * @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')); 

?>

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!