PDO類的封裝

<?phpclass 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());
相關文章
相關標籤/搜索