pdo是什么意思介紹如下:
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供高明網(wǎng)站建設(shè)、高明做網(wǎng)站、高明網(wǎng)站設(shè)計(jì)、高明網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、高明企業(yè)網(wǎng)站模板建站服務(wù),十年高明做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
PDO(PHP Data Objects)是一種在PHP里連接數(shù)據(jù)庫(kù)的使用接口。PDO與mysqli曾經(jīng)被建議用來(lái)取代原本PHP在用的mysql相關(guān)函數(shù),基于數(shù)據(jù)庫(kù)使用的安全性,因?yàn)楹笳咔啡睂?duì)于SQL注入的防護(hù)。
PHP 數(shù)據(jù)對(duì)象(PDO) 擴(kuò)展為PHP訪問(wèn)數(shù)據(jù)庫(kù)定義了一個(gè)輕量級(jí)的一致接口。實(shí)現(xiàn) PDO 接口的每個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)可以公開(kāi)具體數(shù)據(jù)庫(kù)的特性作為標(biāo)準(zhǔn)擴(kuò)展功能。 注意利用 PDO 擴(kuò)展自身并不能實(shí)現(xiàn)任何數(shù)據(jù)庫(kù)功能;必須使用一個(gè)具體數(shù)據(jù)庫(kù)的 PDO 驅(qū)動(dòng)來(lái)訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)。
相關(guān)信息:
PDO 提供了一個(gè)數(shù)據(jù)訪問(wèn)抽象層,這意味著,不管使用哪種數(shù)據(jù)庫(kù),都可以用相同的函數(shù)(方法)來(lái)查詢和獲取數(shù)據(jù)。 PDO不提供數(shù)據(jù)庫(kù)抽象層;它不會(huì)重寫 SQL,也不會(huì)模擬缺失的特性。如果需要的話,應(yīng)該使用一個(gè)成熟的抽象層。
從 PHP 5.1開(kāi)始附帶了 PDO,在 PHP 5.0 中是作為一個(gè) PECL 擴(kuò)展使用。 PDO 需要PHP 5核心的新OO特性,因此不能在較早版本的 PHP 上運(yùn)行。
PDO可以兼容更多數(shù)據(jù)庫(kù),同樣的語(yǔ)法訪問(wèn)不同數(shù)據(jù)庫(kù);
配置簡(jiǎn)單,操作方便;
PDO對(duì)預(yù)處理語(yǔ)句的支持需要使用PDOStatement類對(duì)象,所以PDOStatement類只是PDO的一部分,這個(gè)類比較大作用是防止sql注入:
1
2
3
4
5
6
7
8
9
?php
//...省略PDO連接數(shù)據(jù)庫(kù)代碼
$query = "insert into contactinfo (name,address,phone) values(:name,:address,:phone)";
$stmt = $dbh-prepare($query); //調(diào)用PDO對(duì)象中的prepare()方法
$stmt-blinparam(':name',$name); //將變量$name的引用綁定到準(zhǔn)備好的查詢名字參數(shù)":name"中
$stmt-blinparam(':address',$address);
$stmt-blinparam(':phone',phone);
//...
?
它是每個(gè)字段值可以對(duì)應(yīng)替換的,pdo可以對(duì)每個(gè)值進(jìn)行處理,防止sql注入;
就是操作數(shù)據(jù)庫(kù)的方法,
pdo就是把操作數(shù)據(jù)庫(kù)的函數(shù)封裝成一個(gè)pdo類,其間做了安全驗(yàn)證而已。
在使用PDO之前首先要設(shè)置PHP.INI文件,使PHP支持PDO,因?yàn)镻HP5默認(rèn)是不支持的。在PHP安裝目錄下找到PHP.INI文件,打開(kāi)并搜索extension=php_pdo.dll 和 extension=php_pdo_mysql.dll,將前面的分號(hào)(;)去掉,重啟apache即可。
接下來(lái)我們就開(kāi)始寫PHP代碼了,首先是連接數(shù)據(jù)庫(kù),看下面的例子:
!--?php
define('DB_NAME', 'pdo_test');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
try {
$DBH = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD);
$DBH---exec('SET CHARACTER SET '.DB_CHARSET);
$DBH-exec('SET NAMES '.DB_CHARSET);
} catch (PDOException $e) {
print "Error!: " . $e-getMessage() . "br";
die();
}
?
連接成功后,我們需要對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行增刪改查操作,這里主要用到exec和query兩個(gè)函數(shù)。
示例:
!--?php
//增加數(shù)據(jù)
$sql_insert = 'Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,'.time().rand(1,100).','.time().rand(1,100).',\'no\')';
$back = $DBH---exec($sql_insert); //返回 bool 的true or fal
$lastInsertId = $DBH-lastInsertId();
//刪除數(shù)據(jù)
$sql_delete = 'Delete FROM wp_options Where option_id='.$lastInsertId;
$back = $DBH-exec($sql_delete); //返回 bool 的true or fal
$lastInsertId = $DBH-lastInsertId();
//更新數(shù)據(jù)
$sql_update = 'Update wp_options SET option_name = \''.time().rand(1,100).'\' Where option_id='.$lastInsertId;
$lastUpdateId = $DBH-lastInsertId(); //返回的對(duì)應(yīng)的操作的id
//查詢數(shù)據(jù)
$sql_select = 'Select option_id FROM wp_options orDER BY option_id DESC LIMIT 4 ';
$back = $DBH-query($sql_select); //返回一個(gè)對(duì)象 這個(gè)對(duì)象可以用foreach 直接遍歷循環(huán) 循環(huán)的為查詢的結(jié)果集
$back = $DBH-query($sql_select)-fetch(); //返回一條數(shù)據(jù)結(jié)果 這個(gè)對(duì)象可以用foreach 直接遍歷循環(huán) 循環(huán)的為查詢的結(jié)果集
$back = $DBH-query($sql_select)-fetchAll(); //返回一個(gè)數(shù)組 這個(gè)對(duì)象可以用foreach 直接遍歷循環(huán) 循環(huán)的為查詢的結(jié)果集
$back = $DBH-query($sql_select)-fetchColumn(0); //返回一個(gè)字段字符串,這個(gè)字符串是返回的記錄的第一條記錄的第一個(gè)字段
?
到這里,PDO的基本操作基本上結(jié)束了。對(duì)于一般的企業(yè)網(wǎng)站,小型的管理系統(tǒng)基本上能滿足了,但是,如果我們開(kāi)發(fā)大型網(wǎng)站或者邏輯較復(fù)雜的管理系統(tǒng),僅僅靠數(shù)據(jù)的讀寫是遠(yuǎn)遠(yuǎn)不夠的,我們可能還需要對(duì)數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程、事務(wù)等對(duì)象進(jìn)行操作,下面我們繼續(xù)看看用PDO是如何實(shí)現(xiàn)的。如果還有更多問(wèn)題可以去后盾網(wǎng)論壇問(wèn)題求助專區(qū),希望我的回答對(duì)你有幫助!