php pdo封装类实现mysql数据增删查改

发布时间:2019-11-19编辑:脚本学堂
php pdo库的实例,php pdo封装类实现mysql数据增删查改,可以指定数据库用户名、数据库密码,使用pdo扩展封装数据库访问类会更加安全。

例子,php pdo封装类代码:

复制代码 代码示例:

<?php 
define('DSN', 'mysql:host=127.0.0.1;dbname=baozhong_tour'); //数据库地址+数据库名的常量 
define('DB_USERNAME', 'root'); //数据库用户名 
define('DB_USERPWD', ''); //数据库密码 
?> 
<?php 
/**
* @author shuimugan
* @version 0.2
* @return PDOStatement
*/ 
function getConn() { 
try { 
$db = new PDO(DSN, DB_USERNAME, DB_USERPWD); //创建pdo对象,传入数据库参数信息 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //设置数据库错误信息 
$db->query('set names utf8;'); //设置编码为utf8 
return $db; 

catch (PDOException $e) { 
echo '数据处理出错,请联系网站管理员!'; 
print_r($e);//超详细的报错信息,上线后必须注释这句话! 
return false; 


/**
* @author shuimugan
* @version 0.2
* @param String $tablename 表名,类型为字符串
* @param Array $column_name 列名,要数组的格式
* @param String $condition 条件,如'where name=? and pws=?'或'name like?'
* @param Array $condition_value 条件对应的数据,类型要求为数组,如'name=? and pws=?' 时,
* @return Array 返回一个结果集 数组形式
* @example $column_name=array('*');
$condition_value=array('1');
$limit='limit 0,10';
$res=easy_select('user', $column_name, 'where id=? ', $condition_value,$limit);
*/ 
function easy_select($tablename,$column_name,$condition,$condition_value,$limit) { 
try { 
$db=getConn(); 
$sql='select ';//初始化sql语句 
foreach ($column_name as $col_name) { 
//动态追加列名进sql语句 
if($col_name=='*'){ 
$sql.='*'; 
break

if($col_name==end($column_name)) 

$sql.=$col_name." ";//如果属于最后一个,语句不拼接逗号 
}else { 
$sql.=$col_name.", ";//拼接列名+逗号 


$sql.="from ".$tablename." ";//拼接表名 
$sql.=$condition.' ';//拼接条件语句 
if(strlen($limit)>0){ 
$sql.=$limit;//拼接limit语句 

$db = new PDO(DSN, DB_USERNAME, DB_USERPWD);//创建pdo对象,传入数据库参数信息 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//设置数据库错误信息 
$db->query('set names utf8;');//设置编码为utf8 
$stmt = $db->prepare($sql); 
$i=1;//开始计数,计算?的数量 
$j=count($condition_value); 
for (; $i <= $j; ) { 
$stmt->bindParam($i, $condition_value[$i-1]);// 绑定参数 
$i++; 

// 查询 
$stmt->setFetchMode(PDO::FETCH_ASSOC);//设置通过字段获取数据 
$stmt->execute(); 
// 获取数据 
return $stmt->fetchAll(); 
//return $stmt->rowCount(); 
} catch (PDOException $e) { 
return false; 
echo '数据处理出错,请联系网站管理员!'; 
print_r($e);//超详细的报错信息,上线后必须注释这句话! 


/**
* @author shuimugan
* @version 0.2
* @param String $tablename 表名,类型为字符串
* @param Array $column_name 列名,要数组的格式
* @param String $condition 条件,如'where name=? and pws=?'或'name like?'
* @param Array $condition_value 条件对应的数据,类型要求为数组,如'name=? and pws=?' 时,
* @return int 返回记录条数
* @example $column_name=array('*');
$condition_value=array('1');
$limit='limit 0,10';
$res=easy_selectCount('user', $column_name, 'where id=? ', $condition_value,$limit);
*/ 
function easy_selectCount($tablename,$column_name,$condition,$condition_value,$limit) { 
try { 
$db=getConn(); 
$sql='select ';//初始化sql语句 
foreach ($column_name as $col_name) { 
//动态追加列名进sql语句 
if($col_name=='*'){ 
$sql.='*'; 
break; 

if($col_name==end($column_name)) 

$sql.=$col_name." ";//如果属于最后一个,语句不拼接逗号 
}else { 
$sql.=$col_name.", ";//拼接列名+逗号 


$sql.="from ".$tablename." ";//拼接表名 
$sql.=$condition.' ';//拼接条件语句 
if(strlen($limit)>0){ 
$sql.=$limit;//拼接limit语句 


$db = new PDO(DSN, DB_USERNAME, DB_USERPWD);//创建pdo对象,传入数据库参数信息 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//设置数据库错误信息 
$db->query('set names utf8;');//设置编码为utf8 
$stmt = $db->prepare($sql); 
$i=1;//开始计数,计算?的数量 
$j=count($condition_value); 
for (; $i <= $j; ) { 
$stmt->bindParam($i, $condition_value[$i-1]);// 绑定参数 
$i++; 

// 查询 
//$stmt->setFetchMode(PDO::FETCH_ASSOC);//设置通过字段获取数据 
$stmt->execute(); 
// 获取数据 
return $stmt->rowCount(); 
} catch (PDOException $e) { 
return false; 
echo '数据处理出错,请联系网站管理员!'; 
print_r($e);//超详细的报错信息,上线后必须注释这句话! 


/**
* @author shuimugan
* @version 0.2
* @param String $tablename 表名,类型为字符串
* @param Array $column_name 列名,要数组的格式
* @param Array $column_value 对应的数据,要求数组的格式
* @return int 返回最后自增的id
* @example $column_name=array('pwd','ip','name');
$column_value=array('1246','11.11.11.11','张三');
echo  easy_insert('user',$column_name,$column_value);
*/ 
function easy_insert($tablename,$column_name,$column_value) { 
try { 
$db=getConn(); 
$sql='INSERT INTO ';//初始化sql语句 
$sql.=$tablename.' (';//拼接表名 
foreach ($column_name as $col_name) { 
//动态追加列名进sql语句 
if($col_name==end($column_name)) 

$sql.=$col_name." )";//如果属于最后一个,拼接右括号 
}else { 
$sql.=$col_name.", ";//拼接列名+逗号 


$sql.=' VALUES (';//拼接$condition_value语句 
for ($i=0; $i < count($column_name); $i++) {//拼接问号? 
if ($i==count($column_name)-1) { 
$sql.='?) ;'; 
}else { 
$sql.='?,'; 


$db = new PDO(DSN, DB_USERNAME, DB_USERPWD);//创建pdo对象,传入数据库参数信息 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//设置数据库错误信息 
$db->query('set names utf8;');//设置编码为utf8 
$stmt = $db->prepare($sql); 
for ($i=1; $i <= count($column_name); $i++) {//拼接问号? 
$stmt->bindParam($i, $column_value[$i-1]); 

// 查询 
//echo $sql; 
$stmt->setFetchMode(PDO::FETCH_ASSOC);//设置通过字段获取数据 
$stmt->execute(); 
// 获取数据 
return $db->lastInsertId(); 
} catch (PDOException $e) { 
return false; 
echo '数据处理出错,请联系网站管理员!'; 
print_r($e);//超详细的报错信息,上线后必须注释这句话! 


/**
* @author shuimugan
* @version 0.2
* @param String $tablename 表名,类型为字符串
* @param Array $column_name 列名,要数组的格式
* @param Array $column_value 对应的数据,要求数组的格式
* @param String $condition 对应的的where语句 字符串 如 'where id=?'
* @param Array $condition_value 对应where 后面问号的数据 类型要求为数组
* @return int 返回影响的数据行数
* @example $column_name=array('pwd','ip','name');
$column_value=array('123456','127.152.123.132','张三');
$condition_value=array('1');
easy_update('user',$column_name,$column_value,'where id=?',$condition_value,null);
*/ 
function easy_update($tablename,$column_name,$column_value,$condition,$condition_value,$limit) { 
try { 
$db=getConn(); 
$sql='UPDATE ';//初始化sql语句 
$sql.=$tablename.' SET ';//拼接表名 
foreach ($column_name as $col_name) { 
//动态追加列名进sql语句 
if($col_name==end($column_name)) 

$sql.=$col_name." = ? ";//如果属于最后一个 
}else { 
$sql.=$col_name." = ?, ";//拼接列名+逗号 


$sql.=$condition;//拼接条件语句 
if(strlen($limit)>0){ 
$sql.=$limit;//拼接limit语句 

$db = new PDO(DSN, DB_USERNAME, DB_USERPWD);//创建pdo对象,传入数据库参数信息 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//设置数据库错误信息 
$db->query('set names utf8;');//设置编码为utf8 
$stmt = $db->prepare($sql);//准备语句 
$i=1; 
$total=count($column_name)+count($condition_value); 
for (;$i <= count($column_name);) { 
$stmt->bindParam($i, $column_value[$i-1]);//绑定列名对应数据参数 
$i++; 

$j=1; 
for (;$i <= $total;) { 
$stmt->bindParam($i, $condition_value[$j-1]);//绑定条件对应数据参数 
$i++; 
$j++; 

// 查询 
$stmt->setFetchMode(PDO::FETCH_ASSOC);//设置通过字段获取数据 
$stmt->execute(); 
// 获取数据 
return $stmt->rowCount(); 
} catch (PDOException $e) { 
return false; 
echo '数据处理出错,请联系网站管理员!'; 
print_r($e);//超详细的报错信息,上线后必须注释这句话! 


/**
* @author shuimugan
* @version 0.2
* @param String $tablename 表命名
* @param String $condition 条件 如 'where id= ?'
* @param Array $condition_value 条件对应的值 就是?对应的值
* @param String $limit 限制语句 如'limit 0,1'
* @return int 返回影响结果数
* @example $condition_value=array('83');
echo easy_delete('user', 'where id=?', $condition_value, null);
*/ 
function easy_delete($tablename,$condition,$condition_value,$limit) { 
try { 
$db=getConn(); 
$sql='DELETE FROM ';//初始化sql语句 
$sql.=$tablename.' ';//拼接表名 
$sql.=$condition;//拼接条件语句 
if(strlen($limit)>0){ 
$sql.=$limit;//拼接limit语句 

$db = new PDO(DSN, DB_USERNAME, DB_USERPWD);//创建pdo对象,传入数据库参数信息 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//设置数据库错误信息 
$db->query('set names utf8;');//设置编码为utf8 
$stmt = $db->prepare($sql);//准备语句 
for ($i=1;$i <= count($condition_value);) { 
$stmt->bindParam($i, $condition_value[$i-1]);//绑定条件对应数据参数 
$i++; 

// 查询 
$stmt->setFetchMode(PDO::FETCH_ASSOC);//设置通过字段获取数据 
$stmt->execute(); 
// 获取数据 
return $stmt->rowCount(); 
} catch (PDOException $e) { 
return false; 
echo '数据处理出错,请联系网站管理员!'; 
print_r($e);//超详细的报错信息,上线后必须注释这句话! 



?>