資料庫抽象層:
在資料遷移和專案操作多資料庫時,為了便於操作而提供一種的解決方案。
當從乙個資料庫系統向另乙個資料庫系統遷移時,幾乎不用更改太多的程式**,如將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...