欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

對PHP PDO的一些認(rèn)識小結(jié)

 更新時間:2015年01月23日 09:38:53   投稿:junjie  
這篇文章主要介紹了對PHP PDO的一些認(rèn)識小結(jié),本文講解了什么是PDO、啟用PDO的配置方法、PDO的預(yù)定義類、事務(wù)處理例子等內(nèi)容,需要的朋友可以參考下

1、PDO(PHP Data Object)擴(kuò)展為PHP定義了一個訪問數(shù)據(jù)庫的輕量、持久的接口。實(shí)現(xiàn)PDO接口的每一種數(shù)據(jù)庫驅(qū)動都能以正則擴(kuò)展的形式把各自的特色表現(xiàn)出來。

主要:PDO擴(kuò)展只是一個抽象的接口層,利用PDO擴(kuò)展本身并不能實(shí)現(xiàn)任何數(shù)據(jù)庫操作,必須使用一個特定的數(shù)據(jù)庫PDO驅(qū)動訪問數(shù)據(jù)庫

2、啟動PDO方法:找到php.ini文件將

復(fù)制代碼 代碼如下:

  ;extension=php_pdo.dll

前的分號去掉即可(linux環(huán)境下類似)

3、PDO預(yù)定義類:

  PDO包含了三個預(yù)定義類:PDO、PDOStatement、PDOException

 ?。?)PDO類:代表一個PHP和數(shù)據(jù)庫之間的連接

    PDO:構(gòu)造器,創(chuàng)建一個新的PDO對象

    beginTransaction:開始事務(wù)

    commit:提交事務(wù)

    errorCode:從數(shù)據(jù)庫返回一個錯誤代號,如果有的話

    errorInfo:從數(shù)據(jù)庫返回一個含有錯誤信息的數(shù)組,如果有的話

    exec:執(zhí)行一條SQL語句并返回影響的行數(shù)

    getAttribute:返回一個數(shù)據(jù)庫的連接屬性

    lastInsertId:返回最新插入到數(shù)據(jù)庫的行(ID)

    prepare:為執(zhí)行準(zhǔn)備一條SQL語句,返回語句執(zhí)行后的聯(lián)合結(jié)果集

    query:執(zhí)行一條SQL語句并返回結(jié)果集

    rollBack:回滾一個事務(wù)

    setAttribute:設(shè)置一個數(shù)據(jù)庫連接屬性

 ?。?)PDOStatement類:代表一條預(yù)處理語句以及語句執(zhí)行后的聯(lián)合結(jié)果集

    bindColomn:綁定一個PHP變量到結(jié)果集輸出列

    bindParam:綁定一個變量到PHP預(yù)處理語句中的參數(shù)

    bindValue:綁定一個值到處理語句中的參數(shù)

    closeCursor:關(guān)閉游標(biāo),使語句可以再次執(zhí)行

    cloumnCount:返回結(jié)果集中列的數(shù)量

    errorCode:從語句中返回一個錯誤代號,如果有的話

    errorInfo:從語句中返回包含錯誤信息的數(shù)組

    execute:執(zhí)行一條預(yù)處理語句

    fetch:從結(jié)果集中取出一行

    fetchAll:從結(jié)果集中取出一個包含所有行的數(shù)組

    fetchColomn:返回結(jié)果集中某一列的數(shù)據(jù)

    getAttribute:返回一個PDOStatement屬性

    getColomnMeta:返回結(jié)果集中某一列的結(jié)構(gòu)

    nextRowset:返回下一個結(jié)果集

    rowCount:返回SQL語句執(zhí)行后影響的行數(shù)

    setAttribute:設(shè)置一個PDOStatement屬性

    setFetchMode:為PDOStatement設(shè)定獲取數(shù)據(jù)

 

給一個事務(wù)處理的簡單例子:

復(fù)制代碼 代碼如下:

<?php
    /*
        事務(wù)處理
        MYSQL 表引擎  MyISAM  InnoDB
        添加字段 alter table user add money int not null default 0;
        查看表引擎 show create table user
        修改表引擎 alter table user engine=InnoDB
    */
 
     
    try{
        //實(shí)例化PDO
        $pdo=new PDO("mysql:host=localhost;dbname=photo","root","123456"。array('3'=>'2'));
    }catch(PDOException $e){
        echo $e->getMessage();
    }
    //設(shè)置字符集
    $sql="set name utf8";
    $pdo->exec($sql);
    //開啟事務(wù)處理
    $pdo->beginTransaction();
    $num=250;
    $sql="update user set money=money-{$num} where id =1";
    $rows=$pdo->exec($sql);
     
    $sql="update user set monet=money-{$num} where id=2";
    $rows+=$pdo->exec($sql);
    //結(jié)束事務(wù)處理
    if($rows==2){
        $pdo->commit();
    }else{
        $pdo->rollBack();
    }
?>

(事務(wù)的主要特性:原子性、一致性、獨(dú)立性和持久性)

4、PDO最大的特點(diǎn)是引入了參數(shù)綁定和預(yù)編譯

  預(yù)編譯負(fù)責(zé)兩件事,轉(zhuǎn)移和軟解析提速。程序要支持預(yù)編譯,除了數(shù)據(jù)庫支持外,還需要驅(qū)動支持(PDO和NySQLi支持)

5、PDO的效率問題

 ?。?)在一個大表大數(shù)據(jù)量中進(jìn)行測試,PDO的CRUD效率比MySql直連低5%~15%,并且方差大于MySQL直連

 ?。?)至于負(fù)載方面,PDO開啟長連接后負(fù)載高于MySQL且比較穩(wěn)定。

其實(shí)在實(shí)際應(yīng)用中,90%的程序是不會進(jìn)行數(shù)據(jù)庫遷移的,有數(shù)據(jù)庫遷移的應(yīng)用程序少之又少。

相關(guān)文章

最新評論