天天看點

20150113--PDO增删改查+封裝PDO類

20150113--PDO增删改查+封裝PDO類

20150113--PDO增删改查+封裝PDO類

回顧

方法重寫:是因為對象的通路會先去子類的類空間找,進而形成了對父類的覆寫。

繼承鍊:類隻能單繼承,但是可以通過繼承鍊來實作多繼承

特殊類:final類和抽象類

接口:interface

PHP重載:當通路一個權限不夠或者不存在的屬性或者方法的時候,會自動觸發的魔術方法。

屬性重載和方法重載

對象的儲存和還原:serialize和unserialize(對應的類已經在記憶體:如果有資源屬性必須進行重新加載資源),魔術方法(__sleep和__wakeup)

對象周遊:預設隻能周遊public屬性,實作接口Iterator

需求:手裡有一個大項目,需要支援多種資料庫(Oracle,mysql),采用面向對象的方式去實作。分成兩個團隊進行不同資料庫的支援。

20150113--PDO增删改查+封裝PDO類

上面的管理方式是直接使用PHP的源代碼去管理不同的資料庫,PHP後來增加了一個中間層來管理不同的資料庫(PDO),php腳本隻需要去操作PDO就能夠實作對不同資料庫的操作。

20150113--PDO增删改查+封裝PDO類

回顧................................................................................................................................. 1

PDO.................................................................................................................................. 3

介紹PDO................................................................................................................... 3

PDO擴充加載............................................................................................................ 5

PDO操作................................................................................................................... 6

PDO增删改查............................................................................................................ 7

新增操作............................................................................................................ 7

修改資料............................................................................................................ 7

查詢資料............................................................................................................ 8

錯誤處理.......................................................................................................... 11

預處理............................................................................................................................ 11

預處理文法.............................................................................................................. 11

預處理意義.............................................................................................................. 12

PDO預處理..................................................................................................................... 12

預處理執行流程....................................................................................................... 12

PDO事務處理................................................................................................................. 14

PDO屬性........................................................................................................................ 16

PDO異常........................................................................................................................ 17

反射............................................................................................................................... 19

封裝PDO........................................................................................................................ 21

PDO

介紹PDO

1. 什麼是PDO?

PDO:PHP data object,php資料對象,也叫php資料抽象層,是一種能夠管理多種不同資料庫的資料對象,PHP隻需要去調用PDO,而不用去在意PDO底層管理的資料庫到底是采用什麼樣的方式,哪些方法來實作的功能。讓PHP操作資料庫變得簡單。

PDO不止是一個類:而是三個類:PDO類,PDOStatement類,PDOException類

20150113--PDO增删改查+封裝PDO類

PDO類:主要負責資料庫的連接配接操作以及初始化,能夠向伺服器發送SQL語句

20150113--PDO增删改查+封裝PDO類

PDOStatement類:負責處理所有

有結果的資訊
20150113--PDO增删改查+封裝PDO類

PDOException類:異常處理類,擷取對應可能出錯的錯誤資訊,然後采用對象的形式去處理錯誤

20150113--PDO增删改查+封裝PDO類

PDO擴充加載

1. 開啟擴充:PDO本身的擴充(高版本的PHP預設是開啟的),PDO對應資料庫的擴充

20150113--PDO增删改查+封裝PDO類

2. 指定擴充路徑

20150113--PDO增删改查+封裝PDO類

3. 重新開機Apache生效

PDO操作

1. 連接配接認證

new PDO():得到一個PDO類的對象,這個對象就可以調用PDO類的所有方法

三個參數

$dsn:資料庫類型:host=主機位址;port=端口号;dbname=資料庫

$user:使用者名

$pass:密碼

20150113--PDO增删改查+封裝PDO類

2. 準備SQL語句,發送給伺服器,得到的伺服器執行後的結果

必須區分SQL語句到底是什麼操作:寫操作使用exec,讀操作使用query

PDOStatement query:将結果得到之後,傳回一個PDOStatement類的對象,因為

PDOStatement 類是專門用于資料操作

的。

20150113--PDO增删改查+封裝PDO類

3. 解析資料:通過PDOStatement類對象來實作擷取對應的資料

在PDOStatement類中,提供了一系列的fetch方法來擷取資料

fetch:擷取查詢結果中的一條記錄,同時會将操作指針下移

20150113--PDO增删改查+封裝PDO類

4. 釋放資源:PDO沒有提供釋放資源的接口(方法)

$pdo = null;//沒有明顯的意義,因為不會影響PDOStatement類的對象對資料查詢的操作。

20150113--PDO增删改查+封裝PDO類

PDO增删改查

新增操作
20150113--PDO增删改查+封裝PDO類
修改資料
20150113--PDO增删改查+封裝PDO類

删除資料與修改資料完全一樣,隻是SQL語句不一樣而已。

查詢資料

解析資料方法:PDOStatement類提供的方法

fetch:從結果中擷取一行記錄,預設傳回一個混合數組

fetch_style:

20150113--PDO增删改查+封裝PDO類

效果

20150113--PDO增删改查+封裝PDO類

周遊所有結果

20150113--PDO增删改查+封裝PDO類

fetchAll:取得所有的結果,形成一個二維數組

20150113--PDO增删改查+封裝PDO類

注意:fetchAll也可以通過指定fetch_style來确定采用什麼方式傳回資料。

fetchObject:将資料擷取到一個對象裡面

20150113--PDO增删改查+封裝PDO類

可以通過指定類,來得到不同類的對象。

20150113--PDO增删改查+封裝PDO類

fetchColumn:擷取指定列的資料

20150113--PDO增删改查+封裝PDO類

bindColumn:将指定列的資料綁定到一個外部變量,然後在資料fetch操作的時候,會将對應列的資料,直接放到對應的變量當中,然後可以通過直接使用變量相當于操作對應的字段的值。bindColumn必須配合fetch_style的PDO::FETCH_BOUND

先将一個變量綁定到對應的“結果集”;然後再進行擷取資料

20150113--PDO增删改查+封裝PDO類

注意:綁定如果是采用索引進行綁定,索引從1開始表示第一列

可以通過字段名來綁定變量

20150113--PDO增删改查+封裝PDO類

修改查詢模式:setFetchMode,可以一次性修改所有的fetch模式,以後按照指定的模式進行fetch就可以了。

20150113--PDO增删改查+封裝PDO類
錯誤處理

任何的SQL語句都有可能執行錯誤,SQL的錯誤處理模式都是靜默模式,出了錯也不會報錯,需要對SQL的執行結果進行錯誤的處理。

PDO::errorCode:擷取錯誤代碼

PDO::errorInfo:擷取錯誤資訊

20150113--PDO增删改查+封裝PDO類

posted on 2016-04-21 23:13  山山未遲 閱讀( ...) 評論( ...) 編輯 收藏

轉載于:https://www.cnblogs.com/lifushan/p/5419351.html