PHP封装操作数据库类我们在网站开发时比较合理的做法就是我们的常用的一些程序做成函数或封闭成类,这样可以重复利用,可以节约开发成本了,下面我来给各位介绍了常使用的类。有面向对象技术基础的编程人员看一天就可以写起来了。而PHP在访问数据库的时候又经常会出现各种问题,如字符编码问题、SQL语法错误问题、PHP处理数据记录对象和返回对象的问题等。我这里写了一个数据库操作类,封装了数据库增删添改等操作,很方便使用。用这个类,可以加速网站的后台开发。优点:1.方便快捷,数据库操作只需调用接口;2.统一编码(utf8),不易导致乱码3.结构清晰.如处理前端请求的后台程序(test.php)+表封装类(user.class.php)+数据库封装类(db.class.php)+配置信息(configuration.php)以下例子有四个文件:configuration.php+db.class.php+user.class.php+test.php,放在同一个目录下。首先是一个数据库配置的文件类configuration.php代码如下?php/***一览()*数据库配置信息*/define('DB_HOST','localhost');//服务器define('DB_USER','root');//数据库用户名define('DB_PASSWORD','');//数据库密码define('DB_NAME','test0');//默认数据库define('DB_CHARSET','utf8');//数据库字符集define('TIMEZONE',PRC);//时区设置?接下来就是数据库操作类db.class.php代码如下?phprequire_once(./configuration.php);//引入配置常量文件date_default_timezone_set(TIMEZONE);/***类名:DB*说明:数据库操作类*/classDB{public$host;//服务器public$username;//数据库用户名public$password;//数据密码public$dbname;//数据库名public$conn;//数据库连接变量/***DB类构造函数*/publicfunctionDB($host=DB_HOST,$username=DB_USER,$password=DB_PASSWORD,$dbname=DB_NAME){$this-host=$host;$this-username=$username;$this-password=$password;$this-dbname=$dbname;}/***打开数据库连接*/publicfunctionopen(){$this-conn=mysql_connect($this-host,$this-username,$this-password);mysql_select_db($this-dbname);mysql_query(SETCHARACTERSETutf8);}/***关闭数据连接*/publicfunctionclose(){mysql_close($this-conn);}/***通过sql语句获取数据*@return:array()*/publicfunctiongetObjListBySql($sql){$this-open();$rs=mysql_query($sql,$this-conn);$objList=array();while($obj=mysql_fetch_object($rs)){if($obj){$objList[]=$obj;}}$this-close();return$objList;}/***向数据库表中插入数据*@param:$table,表名*@param:$columns,包含表中所有字段名的数组。默认空数组,则是全部有序字段名*@param:$values,包含对应所有字段的属性值的数组*/publicfunctioninsertData($table,$columns=array(),$values=array()){$sql='insertinto'.$table.'(';for($i=0;$isizeof($columns);$i++){$sql.=$columns[$i];if($isizeof($columns)-1){$sql.=',';}}$sql.=')values(';for($i=0;$isizeof($values);$i++){$sql.='.$values[$i].';if($isizeof($values)-1){$sql.=',';}}$sql.=')';$this-open();mysql_query($sql,$this-conn);$id=mysql_insert_id($this-conn);$this-close();return$id;}/***通过表中的某一属性获取数据*/publicfunctiongetDataByAtr($tableName,$atrName,$atrValue){@$data=$this-getObjListBySql(SELECT*FROM.$tableName.WHERE$atrName='$atrValue');if(count($data)!=0)return$data;returnNULL;}/***通过表中的id,删除记录*/publicfunctiondelete($tableName,$atrName,$atrValue){$this-open();$deleteResult=false;if(mysql_query(DELETEFROM.$tableName.WHERE$atrName='$atrValue'))$deleteResult=true;$this-close();if($deleteResult)returntrue;elsereturnfalse;}/***更新表中的属性值*/publicfunctionupdateParamById($tableName,$atrName,$atrValue,$key,$value){$db=newDB();$db-open();if(mysql_query(UPDATE.$tableName.SET$key='$value'WHERE$atrName='$atrValue')){//$key不要单引号$db-close();returntrue;}else{$db-close();returnfalse;}}/**@description:取得一个table的所有属性名*@param:$tbName表名*@return:字符串数组*/publicfunctionfieldName($tbName){$resultName=array();$i=0;$this-open();$result=mysql_query(SELECT*FROM$tbName);while($property=mysql_fetch_field($result)){$resultName[$i++]=$property-name;}$this-close();return$resultName;}}?接下来是测试了。我在phpmyadmin中建了一个test0数据库,里面建一张表user。然后用php写一个user类对应数据库中的user表。user.class.php代码如下?phprequire_once(./db.class.php);classUser{public$name=NULL;public$password=NULL;/***构造函数*/publicfunction__construct($name,$password){$this-name=$name;$this-password=$password;}publicfunctioninsert(){$db=newDB();$resultid=$db-insertData(user,array(),array('',$this-name,$this-password));return$resultid;}publicstaticfunctiongetUserById($uid){$db=newDB();return$db-getDataByAtr(user,'uid',$uid);}publicstaticfunctiongetUserByName($name){$db=newDB();@$data=$db-getObjListBySql(SELECT*FROMuserWHEREname='$name');if(count($data)!=0)return$data;elsereturnnull;}publicstaticfunctiongetAllUser(){$db=newDB();@$data=$db-getObjListBySql(SELECT*FROMuser);if(count($data)!=0)return$data;elsereturnnull;}publicstaticfunctiondeleteByUid($uid){$admin=Admin::getAdminById($uid);$db=newDB();if($db-delete(user,uid,$uid))returntrue;elsereturnfalse;}}?测试程序:test.php代码如下?phpheader(Content-Type:text/html;charset=utf8);require_once(./user.class.php);$user=newUser(HelloWorld,123456);$user-insert();$users=User::getAllUser();foreach($usersas$u){echobr/.$u-name.br/.$u-password.br/;}?