資料庫抽象層 PDO

2022-03-14 17:42:50 字數 2928 閱讀 1666

資料庫抽象層:

在資料遷移和專案操作多資料庫時,為了便於操作而提供一種的解決方案。

當從乙個資料庫系統向另乙個資料庫系統遷移時,幾乎不用更改太多的程式**,如將ms sql server遷移到mysql。

**規劃必須規範,盡量使用相同的資料進行物件例項化,並且使用相同的資料庫抽象層(如pdo)。這樣只需要改變系統的配置檔案即可遷移資料庫。

目前,使用php進行不同的資料庫系統開發,這些系統很不相同,而許多資料庫抽象層在php的層次有所不同,但彼此使用方法相當,它的發展無疑會提高開發效率。

常見的資料庫抽象層:

pdo,adodb, metabase,pear:db, mysqli(mysql擴充套件元件)

pdo優點:

pdo底層是c語言開發的,速度較快

pdo簡單易學(30多個函式-20個左右)

php高版本中已經將pdo作為預設的資料庫鏈結方式,而mysql_query即將被淘汰。

pdo的用法:

pdo類: 用於運算元據庫的基本命令  $pdo_object

pdo statement類: 對查詢得到的結果集做操作的類  $pdo_statement

pdo exception類: pdo異常類

pdo配置和初始化:

php.ini 開啟pdo: 重新apache

extension = php_pdo.dll

extension = php_pdo_mysql.dll

$db = new pdo("庫型別:host=?;dbname=?","使用者名稱","密碼");

鏈結字串(dsn) 

【pdo_connect.php】

<?php

$dsn = "mysql:host=localhost;dbname=thinkshop";

$user= "root";

$pwd = "";

trycatch(pdoexception $e

)if($pdo

instanceof pdo)

echo "pdo connect ok";

else

echo "pdo connect error";

?>

查詢操作:

$pdo_statement = $pdo_object -> query("sql命令"):

返回值:

查詢功能:  有記錄返回-返回結果集   false

插入/刪除/修改 :返回 true  or  false

獲取結果集中資料為陣列:

$pdo_statement -> fetch():轉換一條記錄為一維陣列

$pdo_statement -> fetchall()轉換所有記錄為二維陣列

設定陣列樣式:

$pdo_statement -> serfetchmode(模式)

模式:pdo::fetch_num:  索引陣列

pdo::fetch_both: 兩種陣列

pdo::fetch_assoc: 關聯陣列

設定鏈結屬性(大小寫):

$pdo_statement -> setattribute(屬性,值);

屬性:pdo::attr_case

值:pdo::case_upper  大寫

pdo::case_lower 小寫

【pdo_statement.php】

<?php

$dsn = "mysql:host=localhost;dbname=thinkshop";

$user= "root";

$pwd = "";

trycatch(pdoexception $e)

$sql = "select * from students";

$result = $pdo -> query($sql

);$data = $result ->fetchall();

print_r($data

);echo "";

//取出後結果集物件中資料不存在

$pdo -> setattribute(pdo::attr_case,pdo::case_upper); // key名大寫

$result = $pdo -> query($sql

);$result -> setfetchmode(pdo::fetch_assoc);

$data = $result ->fetch();

print_r($data

);?>

修改,刪除等無結果集返回的sql操作

$pdo_object -> exec(sql語句);

返回:  有記錄像響,返回的是影響行數,無影響返回0;

預載入處理: 一次載入多次執行.

$pdo_statement = $pdo_object -> prepare(sql語句) : 預載入sql語句命令

$pdo_statement-> execute(): 執行預載入命令

$sql = "select * from  student where sid=:id& sname=:name";

?: 記憶體變數標示的統一符號。

:字元 -> 記憶體變數;

$sql = "select * from  student where sid=:id& sname=:name"

$pdo_statement->bindvalue(":id",值)

$sql = "select * from  student where sid=?& sname=?"

$pdo_statement->bindvalue(1,值)

$pdo _statement -> bindparam(":id|數字",php變數);

PDO資料庫訪問抽象層

pdo建構函式說明 dsn資料來源名稱,包括主機名埠號和資料庫名稱 username資料庫使用者名稱 password 密碼 driver options連線資料庫的其他選項 pdo是比mysql更高效,資料庫遷移時基本不用更改太多的 sql語句 pdo exec 返回sql語句後受影響的行數 qu...

初識PDO資料庫抽象層

就是運算元據庫的方法,pdo就是把運算元據庫的函式封裝成乙個pdo類,其間做了安全驗證而已。果要開啟某個pdo直接在php.ini當中啟用即可。直接將分號去除即可 詳細的開啟服務可以在phpinfo下面查詢即可。mysql連線資料庫的方式是 mysql connect localhost root ...

php資料庫抽象層 PDO

下面就來介紹一下資料庫抽象層pdo的使用 pdo php data objects 是乙個輕量級的php擴充套件,提供了乙個資料訪問抽象層。還要就是pdo只能在php5.0以上版本使用。下面來介紹一下pdo常用的預定義常量 pdo param bool integer 表示布林資料型別 pdo pa...