pdo的用處,用法

2022-07-20 15:57:14 字數 3662 閱讀 4090

pdo主要是用來對資料庫進行訪問的。pdo擴充套件為php訪問資料庫定義了乙個輕量級的一致介面,不同資料庫在訪問時,採用相同方法名稱,解決了連線資料庫不統一問題。pdo擴充套件自身並不能實現任何資料庫功能,必須使用乙個具體資料庫的pdo驅動來訪問資料庫服務。

pdo特點:效能:比傳統和原生訪問資料庫方式的效率高。

執行時擴充套件:pdo是模組化的。能在專案執行時載入資料庫的驅動。

pdo的安裝問題:

找到擴充套件配置位置,新增extension=php_pdo_mysql.dll。 如果**存在,則把前面的分號注釋去掉即可。extension=php_pdo.dll同理

重啟apache

pdo的分類:

pdo類 : 主要使用者資料庫連線,傳送sql語句

pdostatement類 : 主要用來解釋結果集,實現預處理,事物處理

pdoexception類 : 主要用於捕獲pdo異常

建立pdo物件:

變數名 = new pdo('資料庫源','使用者名稱','密碼');

例如:$db = new pdo('mysql:host=localhost;port=3306;charset=utf8;dbname=stu','root','root');

exec()方法執行一條 sql 語句,並返回受影響的行數,建議用於增刪改的sql執行操作

query()方法執行一條sql語句,並返回結果集,建議用於查詢的sql執行操作

對應query()方法,可以通過setfetchmode(pdo::fetch_assoc) 設定獲取結果集的返回型別

setfetchmode方法的乙個pdo引數可以有三個值:

pdo::fetch_assoc 只返回關聯陣列。

pdo::fetch_num  只返回數字下標陣列。

pdo::fetch_both  預設的,關聯陣列+數字下標的陣列。

fetch()方法從結果集中獲取下一行 ,一次只能返回一行資料,獲取不到資料返回false,通過引數可以設定結果集的返回型別

引數一共有以下幾個:

fetchall()方法返回乙個包含結果集中所有行的陣列 ,通過引數可以設定結果集的返回型別。想要獲取結果集中單獨一列的唯一值,需要將pdo::fetch_columnpdo::fetch_unique按位或。想要返回乙個根據指定列把值分組後的關聯陣列,需要將pdo::fetch_columnpdo::fetch_group按位或。

通過引數可以設定結果集的返回型別:

rowcount()方法返回受上乙個 sql 語句影響的行數

prepare()方法生成乙個pdostatement物件,查詢不會立即執行,而是預處理

例如: $stmt = $db->prepare("select * from test");

execute()方法執行一條預處理語句

pdo的預處理:

預處理功能就是在sql語句結構與形式相同的情況下,只有引數不同所採用的一種資料處理機制,其極大的減少了頻寬的浪費。

引數繫結:

bindparam  =>  

繫結乙個引數到指定的變數名。繫結乙個php變數到用作預處理的sql語句中的對應命名佔位符或問號佔位符。這個方法只能繫結變數。

parameter :要繫結的引數      特別注意:如果以上引數,使用的是?問號標識,其繫結時索引是從1開始的!         &

'>bindvalue   =>  把乙個值繫結到乙個引數 。繫結乙個值到用作預處理的 sql 語句中的對應命名佔位符或問號佔位符。

parameter :要繫結的引數      特別注意:如果以上引數,使用的是?問號標識,其繫結時索引是從1開始的!         &

'>特別注意:引數識別符號。對於使用命名佔位符的預處理語句,應是類似 :name

形式的引數名。對於使用問號佔位符(?)的預處理語句,應是以1開始索引的引數位置。

parameter :要繫結的引數      特別注意:如果以上引數,使用的是?問號標識,其繫結時索引是從1開始的!         &

'>

pdo中的事務處理功能:

① 開啟事務

pdo::begintransaction

② 提交事務

pdo::commit

③ 回滾事務

pdo::rollback

parameter :要繫結的引數      特別注意:如果以上引數,使用的是?問號標識,其繫結時索引是從1開始的!         &

'>pdo異常處理

parameter :要繫結的引數      特別注意:如果以上引數,使用的是?問號標識,其繫結時索引是從1開始的!         &

'>異常處理用於在指定的錯誤(異常)情況發生時改變指令碼的正常流程。這種情況稱為異常。

parameter :要繫結的引數      特別注意:如果以上引數,使用的是?問號標識,其繫結時索引是從1開始的!         &

'>pdo異常捕獲:

trycatch(pdoexception $e)

pdo屬性的獲取與設定:

setattribute   =>   設定資料庫控制代碼屬性。

getattribute  =>    獲取資料庫連線的屬性值

一些可用的通用屬性:

pdo::attr_errmode:錯誤報告。

pdo::attr_oracle_nulls (在所有驅動中都可用,不僅限於oracle): 轉換 null 和空字串。

pdo::attr_stringify_fetches: 提取的時候將數值轉換為字串。

pdo::attr_statement_class: 設定從pdostatement派生的使用者提供的語句類。 不能用於持久的pdo例項。

pdo::attr_timeout: 指定超時的秒數。並非所有驅動都支援此選項,這意味著驅動和驅動之間可能會有差異。比如,sqlite等待的時間達到此值後就放棄獲取可寫鎖,但其他驅動可能會將此值解釋為乙個連線或讀取超時的間隔。 需要 int 型別。

pdo::attr_autocommit (在oci,firebird 以及 mysql中可用): 是否自動提交每個單獨的語句。

pdo::attr_emulate_prepares 啟用或禁用預處理語句的模擬。 有些驅動不支援或有限度地支援本地預處理。使用此設定強制pdo總是模擬預處理語句(如果為true),或試著使用本地預處理語句(如果為false)。如果驅動不能成功預處理當前查詢,它將總是回到模擬預處理語句上。 需要 bool 型別。

pdo::mysql_attr_use_buffered_query (在mysql中可用): 使用緩衝查詢。

pdo::attr_default_fetch_mode: 設定預設的提取模式。

PHP中PDO的用法

pdo 資料訪問抽象層 dsn 資料來源 帶有事務功能 dsn mysql host localhost dbname mydb 造pdo物件 pdo new pdo dsn,root 123 設定為異常模式 pdo setattribute pdo attr errmode,pdo errmode...

typeof 的用法和用處

不管實在c還是c 中,typedef這個詞都不少見,當然出現頻率較高的還是在c 中。typedef與 define有些相似,但更多的是不同,特別是在一些複雜的用法上,就完全不同了,看了網上一些c c 的學習者的部落格,其中有一篇關於typedef的總結還是很不錯,由於總結的很好,我就不加修改的引用過...

陣列指標的用法,用處。

int a 4 指標陣列 指標陣列就相當於一次宣告了多個指標。陣列的每乙個元素都是乙個指標。很好理解,下面主要看陣列指標 int p 4 陣列指標 陣列指標就相當於一次宣告了乙個指標。只不過這個指標指向很特別,是乙個陣列。優先順序大於 故陣列指標宣告時要加 例1 include include vo...