標籤:
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