PDO擴(kuò)展為PHP訪問(wèn)數(shù)據(jù)庫(kù)定義了一個(gè)輕量級(jí)的、一致性的接口,它提供了一個(gè)數(shù)據(jù)訪問(wèn)抽象層,這樣,無(wú)論使用什么數(shù)據(jù)庫(kù),都可以通過(guò)一致的函數(shù)執(zhí)行查詢和獲取數(shù)據(jù)。PDO隨PHP5.1發(fā)行,在PHP5.0的PECL擴(kuò)展中也可以使用。
創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比天臺(tái)網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式天臺(tái)網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋天臺(tái)地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴(lài)。
就是操作數(shù)據(jù)庫(kù)的方法,
pdo就是把操作數(shù)據(jù)庫(kù)的函數(shù)封裝成一個(gè)pdo類(lèi),其間做了安全驗(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)始寫(xiě)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ù)的讀寫(xiě)是遠(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)題求助專(zhuān)區(qū),希望我的回答對(duì)你有幫助!
$pdo = new PDO(string $dsn,string $username,string $password);
解釋
⑴$dsn:數(shù)據(jù)源名,全稱(chēng)date source name,包含了請(qǐng)求連接到數(shù)據(jù)庫(kù)的信息
Mysql示例:$dsn="mysql:host=localhost;dbname=要連接的數(shù)據(jù)庫(kù)庫(kù)名";
⑵$username:用戶名,默認(rèn)為root
⑶$password:密碼,默認(rèn)為空(注意:就算密碼為空,在連接PDO的時(shí)候,也需要用""空內(nèi)容的雙引號(hào)去書(shū)寫(xiě))
1、方便不同數(shù)據(jù)庫(kù)之間的切換
數(shù)據(jù)庫(kù)有很多種,比如mysql,mysqli,Oracle,Access等等,使用pdo方式連接數(shù)據(jù)庫(kù),只需要定義DSN即可以連接各種類(lèi)型的數(shù)據(jù)庫(kù)
2、PDO有預(yù)處理機(jī)制,數(shù)據(jù)庫(kù)操作更快,而且預(yù)處理機(jī)制可以有效的防止數(shù)據(jù)注入,降低數(shù)據(jù)庫(kù)被黑客攻擊的可能
本文實(shí)例講述了PHP實(shí)現(xiàn)的pdo連接數(shù)據(jù)庫(kù)并插入數(shù)據(jù)功能。分享給大家供大家參考,具體如下:
創(chuàng)建配置文件
pdo_config.php
?php
$db_Type
=
"mysql";//數(shù)據(jù)庫(kù)類(lèi)型
$host
=
"localhost";//主機(jī)名
$dbName
=
"test";//數(shù)據(jù)庫(kù)名
$userName
=
"root";//用戶名
$password
=
"root";//密碼
$dsn
=
"{$db_Type}:host={$host};dbname={$dbName}";
?
pdo插入數(shù)據(jù)庫(kù)
pdo_insert.php
?php
header('Content-type:text/html;
charset=utf-8');
require
'pdo_config.php';
try{
$pdo
=
new
PDO
($dsn,$userName,$password);//創(chuàng)建一個(gè)連接對(duì)象
$pdo-exec('set
names
utf8');//設(shè)置編碼
$sql
=
"INSERT
student
(name,email)
VALUES
('李四','123@qq.com')";
$pdo-exec($sql);
}catch
(PDOException
$e){
die('操作失敗'.$e-getMessage());
}
//關(guān)閉連接
$pdo
=
null;
?
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《PHP基于pdo操作數(shù)據(jù)庫(kù)技巧總結(jié)》、《php+mysqli數(shù)據(jù)庫(kù)程序設(shè)計(jì)技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:關(guān)于php連接mssql:pdo
odbc
sql
serverPHP5中使用PDO連接數(shù)據(jù)庫(kù)的方法PHP中PDO連接數(shù)據(jù)庫(kù)中各種DNS設(shè)置方法小結(jié)ThinkPHP框架基于PDO方式連接數(shù)據(jù)庫(kù)操作示例PHP使用ODBC連接數(shù)據(jù)庫(kù)的方法tp5(thinkPHP5)框架連接數(shù)據(jù)庫(kù)的方法示例PHP7使用ODBC連接SQL
Server2008
R2數(shù)據(jù)庫(kù)示例【基于thinkPHP5.1框架】tp5(thinkPHP5)操作mongoDB數(shù)據(jù)庫(kù)的方法thinkPHP5實(shí)現(xiàn)數(shù)據(jù)庫(kù)添加內(nèi)容的方法tp5(thinkPHP5)框架數(shù)據(jù)庫(kù)Db增刪改查常見(jiàn)操作總結(jié)PHP利用pdo_odbc實(shí)現(xiàn)連接數(shù)據(jù)庫(kù)示例【基于ThinkPHP5.1搭建的項(xiàng)目】
區(qū)別是:
PHP采用pdo方式訪問(wèn)數(shù)據(jù)庫(kù)時(shí),您不必再使用再為它們封裝數(shù)據(jù)庫(kù)操作類(lèi),只需要使用PDO接口中的方法就可以對(duì)各種數(shù)據(jù)庫(kù)進(jìn)行操作。