PHP实现PDO的mysql数据库操作类
本文实例讲述了PHP实现PDO的mysql数据库操作类。分享给大家供大家参考。具体分析如下:
dbconfig类负责配置数据库访问信息,包括:服务器地址、端口、数据库实例名、用户名、用户密码、字符集等.
dbtemplate类集合了对数据库的访问操作,主要有以下几个操作:
1.queryrows:返回多行记录
2.queryrow:返回为单条记录
3.queryforint:查询单字段,返回整数
4.queryforfloat:查询单字段,返回浮点数(float)
5.queryfordouble:查询单字段,返回浮点数(double)
6.queryforobject:查询单字段,返回对象,实际类型有数据库决定
7.update:执行一条更新语句.insert/upadate/delete
具体代码如下:
classdbconfig{ privatestatic$dbms="mysql"; privatestatic$host='127.0.0.1'; privatestatic$port='3306'; privatestatic$username=''; privatestatic$password=''; privatestatic$dbname=''; privatestatic$charset='utf-8'; privatestatic$dsn; /** * *@return 返回pdodsn配置 */ publicstaticfunctiongetdsn(){ if(!isset(self::$dsn)){ self::$dsn=self::$dbms.':host='.self::$host.';port='. self::$port.';dbname='.self::$dbname; if(strlen(self::$charset)>0){ self::$dsn=self::$dsn.';charset='.self::$charset; } } returnself::$dsn; } /** *设置mysql数据库服务器主机 *@param $host主机的ip地址 */ publicstaticfunctionsethost($host){ if(isset($host)&&strlen($host)>0) self::$host=trim($host); } /** *设置mysql数据库服务器的端口 *@param $port端口 */ publicstaticfunctionsetport($port){ if(isset($port)&&strlen($port)>0) self::$port=trim($port); } /** *设置mysql数据库服务器的登陆用户名 *@param $username */ publicstaticfunctionsetusername($username){ if(isset($username)&&strlen($username)>0) self::$username=$username; } /** *设置mysql数据库服务器的登陆密码 *@param $password */ publicstaticfunctionsetpassword($password){ if(isset($password)&&strlen($password)>0) self::$password=$password; } /** *设置mysql数据库服务器的数据库实例名 *@param $dbname数据库实例名 */ publicstaticfunctionsetdbname($dbname){ if(isset($dbname)&&strlen($dbname)>0) self::$dbname=$dbname; } /** *设置数据库编码 *@param $charset */ publicstaticfunctionsetcharset($charset){ if(isset($charset)&&strlen($charset)>0) self::$charset=$charset; } } /** *一个数据库操作工具类 * *@authorzhjiun@gmail.com */ classdbtemplate{ /** *返回多行记录 *@param $sql *@param $parameters *@return 记录数据 */ publicfunctionqueryrows($sql,$parameters=null){ return$this->exequery($sql,$parameters); } /** *返回为单条记录 *@param $sql *@param $parameters *@return */ publicfunctionqueryrow($sql,$parameters=null){ $rs=$this->exequery($sql,$parameters); if(count($rs)>0){ return$rs[0]; }else{ returnnull; } } /** *查询单字段,返回整数 *@param $sql *@param $parameters *@return */ publicfunctionqueryforint($sql,$parameters=null){ $rs=$this->exequery($sql,$parameters); if(count($rs)>0){ returnintval($rs[0][0]); }else{ returnnull; } } /** *查询单字段,返回浮点数(float) *@param $sql *@param $parameters *@return */ publicfunctionqueryforfloat($sql,$parameters=null){ $rs=$this->exequery($sql,$parameters); if(count($rs)>0){ returnfloatval($rs[0][0]); }else{ returnnull; } } /** *查询单字段,返回浮点数(double) *@param $sql *@param $parameters *@return */ publicfunctionqueryfordouble($sql,$parameters=null){ $rs=$this->exequery($sql,$parameters); if(count($rs)>0){ returndoubleval($rs[0][0]); }else{ returnnull; } } /** *查询单字段,返回对象,实际类型有数据库决定 *@param $sql *@param $parameters *@return */ publicfunctionqueryforobject($sql,$parameters=null){ $rs=$this->exequery($sql,$parameters); if(count($rs)>0){ return$rs[0][0]; }else{ returnnull; } } /** *执行一条更新语句.insert/upadate/delete *@param $sql *@param $parameters *@return 影响行数 */ publicfunctionupdate($sql,$parameters=null){ return$this->exeupdate($sql,$parameters); } privatefunctiongetconnection(){ $conn=newpdo(dbconfig::getdsn(),dbconfig::getusername(),dbconfig::getpassword()); $conn->setattribute(pdo::attr_case,pdo::case_upper); return$conn; } privatefunctionexequery($sql,$parameters=null){ $conn=$this->getconnection(); $stmt=$conn->prepare($sql); $stmt->execute($parameters); $rs=$stmt->fetchall(); $stmt=null; $conn=null; return$rs; } privatefunctionexeupdate($sql,$parameters=null){ $conn=$this->getconnection(); $stmt=$conn->prepare($sql); $stmt->execute($parameters); $affectedrows=$stmt->rowcount(); $stmt=null; $conn=null; return$affectedrows; } }
pdo始于php5,php6中将默认使用pdo,不同于以前版本中混乱的数据库操作方式,pdo统一了对数据库的访问方式,给编程带来了极大的便利性,本工具类就是基于pdo,模拟了java世界spring框架中的jdbctemplate操作类.
希望本文所述对大家的PHP程序设计有所帮助。