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程序设计有所帮助。