PDO類的封裝


<?php

class MyPDO
{
/** 訪問數據庫的PDO對象 */
protected $pdo;

/**
* 當前類的構造函數
* 讀取數據庫配置信息文件,並初始化PDO對象
*/
function __construct()
{
if (file_exists('db.ini')) {
$arr = @parse_ini_file('db.ini');
} else {
exit('沒有找到對應的數據庫配置文件信息 ...');
}
$dsn = "{$arr['dbms']}:dbname={$arr['dbname']};host={$arr['host']};port={$arr['port']};charset={$arr['charset']}";
$user = $arr['user'];
$password = $arr['password'];
$this->pdo = new PDO($dsn, $user, $password);
}

/**
* 銷毀自己的操作類時,同時銷毀被創建了的PDO對象
*/
function __destruct()
{
$this->pdo = null;
}

/**
* 執行DML操作語句
* @param $sql 需要執行的SQL語句
* @return int 返回執行語句后受到影響的行數
*/
public function pdoExec($sql)
{
return $this->pdo->exec($sql);
}

/**
* 返回結果為數組結構
* @param $sql 需要執行的SQL語句
* @param int $var 執行query函數的參數(可選值:PDO::FETCH_BOTH(默認),PDO::FETCH_NUM,PDO::FETCH_ASSOC)
* @return array 將結果轉換為數組並返回,如果沒有查詢結果則返回一個空數組
*/
public function arrayByPdoQuery($sql, $var = PDO::FETCH_BOTH)
{
$ps = $this->pdo->query($sql, $var);
if ($ps)
return $ps->fetchAll();
return array();
}

/**
* 獲取查詢結果並封裝為一個對象數組
* @param $sql 需要執行的SQL語句
* @param string $class_name 創建類的名稱
* @param array $ctor_args 此數組的元素被傳遞給對應類的構造函數
* @return array 返回組裝好的對象數組
*/
public function objectByPdoQuery($sql, $class_name = 'stdClass', $ctor_args = array())
{
$ps = $this->pdo->query($sql);
$arr = array();
if ($ps) {
while ($obj = $ps->fetchObject($class_name, $ctor_args)) {
array_push($arr, $obj);
}
}
return $arr;
}

/**
* 使用PDO預編譯語句執行查詢操作並返回結果集合
* @param $sql 需要執行的SQL語句(預編譯語句寫法)
* @param array $arr 預編譯語句需要添加的數值,數組結構
* @return array 轉換為數組結構的返回值結果
*/
public function yuChuLi($sql, array $arr = array())
{
$ps = $this->pdo->prepare($sql);
$ps->execute($arr);
if ($ps)
return $ps->fetchAll();
return array();
}

/**
* 使用PDO預編譯語句執行查詢操作並返回結果集合
* @param $sql 需要執行的SQL語句(預編譯語句寫法)
* @param array $arr 預編譯語句需要添加的數值,數組結構
* @return int 返回DML執行后受影響的行數
*/
public function intByPdoPrepare($sql, array $arr = array())
{
$ps = $this->pdo->prepare($sql);
$ps->execute($arr);
return $ps->rowCount();
}

/**
* 獲取查詢結果並封裝為一個對象數組
* @param $sql 需要執行的SQL語句
* @param array $arr 預編譯語句需要添加的數據值,數組結構
* @param string $class_name 創建類的名稱
* @param array $ctor_args 此數組的元素被傳遞給對應的構造函數
* @return array 返回組裝好的對象數組
*/
public function objectByPdoPrepare($sql, array $arr = array(), $class_name = 'stdClass', $ctor_args = array())
{
$ps = $this->pdo->prepare($sql);
$ps->execute($arr);
$array = array();
if ($ps) {
while ($obj = $ps->fetchObject($class_name, $ctor_args)) {
array_push($array, $obj);
}
}
return $array;
}
}

//include_once 'Student.class.php';
//$mp = new MyPDO();
//$arr = $mp->arrayByPdoQuery('select * from students', PDO::FETCH_NUM);
//var_dump($arr);
//$arr = $mp->objectByPdoQuery('select * from student', 'Student');
//var_dump($arr[0]);
//$mp->yuChuLi('select * from user where uloginname=? and uloginpwd=?',array());


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM