PHP PDO优化数据库操作类 多数据库驱动类
/**
* Description of pdo
*
* @author Administrator
*/
class
ZcPdo {
public
$dbh
=
""
;
//全局连接Object;
//public $sth = ""; //预处理参数
private
$dsn
=
""
;
private
$user
=
""
;
private
$password
=
""
;
public
$returnAy
=
array
(
'errcode'
=>
''
,
'errmsg'
=>
''
);
//构造函数 - 初始化连接
public
function
__construct(
$dsn
,
$user
,
$password
) {
$this
->dsn =
$dsn
;
$this
->user =
$user
;
$this
->password =
$password
;
$this
->pdoConnect();
}
private
function
pdoConnect(){
try
{
$this
->dbh =
new
PDO(
$this
->dsn,
$this
->user,
$this
->password);
return
$this
->dbh;
}
catch
(PDOException
$e
) {
echo
'Connection failed: '
.
$e
->getMessage();
exit
();
}
}
//设置PDO参数
public
function
zcAttribute(
$attribute
,
$value
){
$this
->dbh->setAttribute(
$attribute
,
$value
);
}
public
function
zcLastId(
$name
= NULL){
return
$this
->dbh->lastInsertId(
$name
);
}
//数据库单语句执行操作
public
function
zcExec(
$param
) {
try
{
$rows
=
$this
->dbh->
exec
(
$param
);
//影响行数
return
$this
->zcLog(TRUE,
$rows
);
}
catch
(PDOException
$e
) {
return
$this
->zcLog(FALSE,
$e
->getMessage());
}
}
//格式化数据
public
function
zcQuote(
$string
){
return
$this
->dbh->quote(
$string
);
}
//批量处理格式化数据
public
function
zcBatchQuote(
$data
){
$result
=
""
;
if
(!
empty
(
$data
) && (
is_array
(
$data
) ||
is_object
(
$data
))){
foreach
(
$data
as
$key
=>
$value
){
if
(!
empty
(
$value
) && (
is_array
(
$value
) ||
is_object
(
$value
))){
$result
[
$key
] =
$this
->zcBatchQuote(
$value
);
}
else
{
$result
[
$key
] =
$this
->zcQuote(
$value
);
}
}
}
else
{
$result
=
$this
->zcQuote(
$data
);
}
return
$result
;
}
//数据库预处理操作 - 获取全部数据
public
function
zcFetchAll(
$statement
,
$parameter
= NULL ,
$type
= PDO::FETCH_ASSOC){
try
{
$sth
=
$this
->dbh->prepare(
$statement
);
//$sth->execute($parameter);
$sth
->execute(
$this
->zcBatchQuote(
$parameter
));
$result
=
$sth
->fetchAll(
$type
);
if
(!
empty
(
$result
) &&
is_array
(
$result
)){
return
$this
->zcLog(TRUE,
$result
);
}
else
{
return
$this
->zcLog(TRUE, NULL);
}
}
catch
(PDOException
$e
) {
return
$this
->zcLog(FALSE,
$e
->getMessage());
}
}
//数据库预处理操作 - 获取一行数据
public
function
zcFetchRow(
$statement
,
$parameter
= NULL ,
$type
= PDO::FETCH_ASSOC){
try
{
$sth
=
$this
->dbh->prepare(
$statement
);
$sth
->execute(
$this
->zcBatchQuote(
$parameter
));
$result
=
$sth
->fetch(
$type
);
if
(!
empty
(
$result
) &&
is_array
(
$result
)){
return
$this
->zcLog(TRUE,
$result
);
}
else
{
return
$this
->zcLog(TRUE, NULL);
}
}
catch
(PDOException
$e
) {
return
$this
->zcLog(FALSE,
$e
->getMessage());
}
}
//数据库预处理操作 - 获取一个数据
public
function
zcFetchOne(
$statement
,
$parameter
= NULL){
try
{
$sth
=
$this
->dbh->prepare(
$statement
);
$sth
->execute(
$this
->zcBatchQuote(
$parameter
));
$result
=
$sth
->fetch(PDO::FETCH_NUM);
if
(!
empty
(
$result
) &&
is_array
(
$result
)){
return
$this
->zcLog(TRUE,
$result
[0]);
}
else
{
return
$this
->zcLog(TRUE, NULL);
}
}
catch
(PDOException
$e
) {
return
$this
->zcLog(FALSE,
$e
->getMessage());
}
}
//开始事务
public
function
zcBegin(){
$this
->dbh->beginTransaction();
}
//提交事务
public
function
zcCommit(){
$this
->dbh->commit();
}
//回滚事务
public
function
zcRollBack(){
$this
->dbh->rollBack();
}
//预处理事务执行语句
public
function
zcPtmTstQuery(
$statement
,
$parameter
= NULL){
try
{
$this
->zcBegin();
$result
=
$this
->dbh->prepare(
$statement
)->execute(
$parameter
);
$this
->zcCommit();
return
$this
->zcLog(TRUE,
$result
);
}
catch
(PDOException
$e
) {
$this
->zcRollBack();
return
$this
->zcLog(FALSE,
$e
->getMessage());
}
}
//预处理执行语句
public
function
zcPtmQuery(
$statement
,
$parameter
= NULL){
try
{
$result
=
$this
->dbh->prepare(
$statement
)->execute(
$parameter
);
return
$this
->zcLog(TRUE,
$result
);
}
catch
(PDOException
$e
) {
return
$this
->zcLog(FALSE,
$e
->getMessage());
}
}
//Query执行
public
function
zcQuery(
$statement
,
$type
= PDO::FETCH_ASSOC){
try
{
$result
=
$this
->dbh->query(
$statement
,
$type
);
return
$this
->zcLog(TRUE,
$result
);
}
catch
(PDOException
$e
) {
return
$this
->zcLog(FALSE,
$e
->getMessage());
}
}
//日志LOG
public
function
zcLog(
$errcode
,
$errmsg
){
$this
->returnAy =
array
();
$this
->returnAy[
'errcode'
] =
$errcode
;
$this
->returnAy[
'errmsg'
] =
$errmsg
;
$this
->returnAy[
'errtime'
] =
date
(
"Y-m-d H:i:s"
,time());
return
$this
->returnAy;
}
}
推荐文章
2025-01-18
2024-11-28
2024-11-09
2024-10-25
2024-06-25
2024-01-04
2023-11-06
2023-10-30
2023-10-13
2023-10-10
稳定
产品高可用性高并发贴心
项目群及时沟通专业
产品经理1v1支持快速
MVP模式小步快跑承诺
我们选择声誉坚持
10年专注高端品质开发