物件導向第七天----資料庫抽象層PDO

來源:互聯網
上載者:User

標籤:

php操作mysql方法:
mysql
mysqli
PDO

資料庫抽象層--PDO (重點)
=======================================================================
1. pdo的作用
      pdo(php data object) 擴充類庫,為PHP訪問資料庫提供了輕量級的,統一的介面。無論使用
      什麼資料庫,都可以通過一致的函數執行查詢和擷取資料
優勢:
      ① 對不同的資料庫提供統一的操作方式
      ② 對執行批量SQL效率高,對PHP操作SQL進行最佳化
      ③ PDO提供了預先處理機制,提高安全性 防止SQL注入
劣勢:
    學習難度大
mysqli 和 pdo 比較
      ① 處理海量資料 PDO效率高
      ② 多並行作業 PDO 效率高

2. pdo的安裝(直接過)
      ①php.ini 開啟 extension=php_pdo.dll extension=php_pdo_mysql.dll
      ②重啟apache

3. 建立PDO對象
    3.1 以多種方式調用構造方法
        DSN : data source name 資料庫類型 host dbname
           ① 直接在構造方法中傳入DSN USER PASS
                 mysql:host=localhost;dbname=s44
            ② 在php.ini的[PDO]中定義:
再看看
③ 寫設定檔定義常量
            將參數寫成常量 dbconfig.php 中引入

3.2 PDO與連結相關的選項
    設定串連資料的值: setAttribute(attrname/attrnum,attrname/attrnum);
        擷取串連屬性的值(兩種方式): getAttribute() (推薦使用) 或者 new PDO 第四個參數
              ① 錯誤處理方式 PDO::ATTR_ERRMODE
              ② 是否自動認可 PDO::ATTR_AUTOCOMMIT
              ③ 結果集數組方式 PDO::ATTR_DEFAULT_FETCH_MODE

3.3 PDO的字元集設定
    $pdo->exec(‘set names utf8‘);
    或者
     $pdo->query(‘set names utf8‘);
3.3 PDO的錯誤處理模式 針對下面SQL執行部分
    設定 PDO::ATTR_ERRMODE
        值:PDO::ERRMODE_SILENT不報錯(預設)
        值:PDO::ERRMODE_WARNING警告
        值:PDO::ERRMODE_EXCEPTION異常(推薦)

 

echo ‘預設的錯誤模式值是:‘.$pdo->getAttribute(PDO::ATTR_ERRMODE).‘<BR>‘.‘<br>‘;//預設的錯誤模式值是:0
echo ‘不報錯模式的值是:‘.PDO::ERRMODE_SILENT.‘<BR>‘.‘<br>‘;//不報錯模式的值是:0
echo ‘WARNING錯模式的值是:‘.PDO::ERRMODE_WARNING.‘<BR>‘.‘<br>‘;// WARNING錯模式的值是:1
echo ‘異常模式模式的值是:‘.PDO::ERRMODE_EXCEPTION.‘<BR>‘.‘<br>‘;//異常模式模式的值是:2


3.4 PDO對象中的成員方法
    query()//執行查詢操作
    exec()//執行寫入操作
    setAttribute()//設定串連屬性
    getAttribute()//擷取串連屬性
    lastInsertId()//擷取最後插入ID


4. PDOStatment 對象
    4.1 PDOStatmen中的成員方法
        fetch
        fetchALl
4.2 設定返回結果的數群組類型
    PDO::FETCH_ASSOC
    PDO::FETCH_NUM
    PDO::FETCH_BOTH
    PDO::FETCH_OBJstdClass填充屬性

//預設的遍曆數組的模式 是 BOTH:3
echo ‘預設的遍曆數組的模式 是 BOTH:‘.$pdo->getAttribute(PDO::ATTR_DEFAULT_FETCH_MODE).‘<BR>‘.‘<BR>‘;
echo ‘關聯陣列模式的ASSOC值是 ‘.PDO::FETCH_ASSOC.‘<BR>‘.‘<BR>‘;//關聯陣列模式的ASSOC值是 2
ECHO ‘索引數組模式NUM的值是 :‘.PDO::FETCH_NUM.‘<BR>‘.‘<BR>‘;//索引數組模式NUM的值是 :3
ECHO ‘所有模式的BOTH值是:‘.PDO::FETCH_BOTH.‘<BR>‘.‘<BR>‘;//所有模式的BOTH值是:4
ECHO ‘對象模式OBJ的值是:‘.PDO::FETCH_OBJ.‘<BR>‘.‘<BR>‘;//對象模式OBJ的值是:5



4.3 pdo處理結果集方式
1、fetch 遍曆
2、fetchAll全部擷取
3、直接遍曆$stmt對象

5. pdo預先處理的使用(重點)
5.1 預先處理的優點
防止SQL注入
批處理能夠提高SQL處理效率

5.2 預先處理的步驟
    1、準備SQL 用預留位置 代替條件參數 (? / :name )
    2、執行預先處理 prepare 返回PDOstatement對象
    3、執行綁定參數
    4、執行SQL
5.3 預先處理sql方式

5.4 綁定參數的方式

5.5 對查詢結果進行綁定

6. pdo事務機制
6.1 MySQL 事務

6.2MYSQL用戶端中操作過程:

6.3 PDO 中使用事務

物件導向第七天----資料庫抽象層PDO

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.