本文簡(jiǎn)單介紹PDO對(duì)象下各個(gè)函數(shù)的使用方法久信。
事先聲明:本文不詳盡剿涮,見(jiàn)具體請(qǐng)前往PHP手冊(cè)參閱链韭。
安裝PDO
PDO其實(shí)就是一個(gè)PHP的模塊陪白。
Windows
在Windows下面很簡(jiǎn)單
打開PHP所在文件夾下的php.ini配置文件
先改好PHP的拓展目錄缎玫,也就是extension的目錄(可以通過(guò)Search跳轉(zhuǎn))硬纤,一半理論上把Windows對(duì)應(yīng)那行前面的“;”去掉就好了赃磨。
在后文里筝家,把extension=php_pdo.dll
和extension=php_pdo_XXX.dll
(XXX表示你所用的數(shù)據(jù)庫(kù)類型)前面的“;”去掉
Linux
至于Linux(測(cè)試環(huán)境Ubuntu16.04邻辉,PHP7)溪王,使用APT安裝的情況下它默認(rèn)是開好了PDO的,不用再去編譯值骇。
測(cè)試環(huán)境Ubuntu16.04莹菱,PHP7:首先我們應(yīng)該知道在linux下方便地開啟模塊是用phpenmod命令。
然后我們?cè)谘b好php之后就可以在bash里phpenmod pdo
來(lái)先打開PDO擴(kuò)展吱瘩。
然后sudo apt install php7.0-mysql
(版本注意自行更改)道伟。
這樣它會(huì)將編譯好的pdo_mysql模塊文件放到你的mod_avaliable目錄,現(xiàn)在就可以通過(guò)phpenmod pdo_mysql
來(lái)開啟PDO中mysql的驅(qū)動(dòng)搅裙。
編譯安裝方法這里不細(xì)說(shuō)皱卓。
使用PDO
正如我們所知,PDO是OO(面向?qū)ο螅┑牟看栽谑褂盟拔覀冃枰獙?shí)例化一個(gè)PDO對(duì)象娜汁。
1. 實(shí)例化
命令
$myPDO = new PDO($dsn[, $username[, $password[, $driver_options]]])
注:“[”與“]”中內(nèi)容表示可空。
解析
我們可以看見(jiàn)一共有四個(gè)參數(shù)
$dsn 就是DSN兄朋,關(guān)于DSN是啥不知道的點(diǎn)我掐禁。所以,舉個(gè)栗子我們連接MySQL數(shù)據(jù)庫(kù)就可以這樣在實(shí)例化之前這樣寫$dsn = "mysql:host=localhost;dbname=test";
$username 就是你對(duì)應(yīng)的數(shù)據(jù)庫(kù)的用戶名颅和。
$password 就是用戶名對(duì)應(yīng)的密碼傅事。
最后是$driver_options,需要說(shuō)明的是峡扩,前三個(gè)都是字符串形式蹭越,而它則是數(shù)組形式,一般不是特殊需求不用寫它教届,想了解的自己去看手冊(cè)【畢竟這里只是簡(jiǎn)單介紹對(duì)吧】响鹃。
2. 對(duì)象函數(shù)
PDO實(shí)例化后就可以通過(guò)這個(gè)實(shí)例化對(duì)象來(lái)進(jìn)行數(shù)據(jù)庫(kù)sql操作驾霜。
常用的有如下函數(shù)
函數(shù) | 描述 |
---|---|
PDO::exec | 執(zhí)行一條 SQL 語(yǔ)句,并返回受影響的行數(shù) |
PDO::query | 執(zhí)行一條SQL語(yǔ)句买置,返回一個(gè)PDOStatement對(duì)象 |
PDO::prepare | 準(zhǔn)備要執(zhí)行的SQL語(yǔ)句粪糙,返回一個(gè)PDOStatement對(duì)象 |
PDO::quote | 返回一個(gè)添加引號(hào)的字符串,用于SQl語(yǔ)句中 |
PDO::lastInsertId | 返回最后插入行的ID或序列值 |
PDO::setAttribute | 設(shè)置屬性 |
可以看到exec和query非常相似忿项,由于返回內(nèi)容的不同蓉冈,我們一般使用exec進(jìn)行增刪改操作,使用query進(jìn)行查操作轩触。
在通過(guò)query得到的PDOStatement對(duì)象上我們可以進(jìn)行進(jìn)一步操作(往往是數(shù)據(jù)的獲取寞酿,即查操作)。
函數(shù) | 描述 |
---|---|
PDOStatement::execute | 執(zhí)行一條預(yù)處理語(yǔ)句(prepare) |
PDOStatement::rowCount() | 返回受上一個(gè) SQL 語(yǔ)句影響的行數(shù) |
PDOStatement::fetch | 從結(jié)果集中獲取下一行 |
PDOStatement::fetchAll | 返回一個(gè)包含結(jié)果集中所有行的數(shù)組 |
PDOStatement::fetchColumn | 從結(jié)果集中的下一行返回單獨(dú)的一列 |
PDOStatement::fetchObject | 獲取下一行并作為一個(gè)對(duì)象返回 |
PDOStatement::bindParam | 綁定一個(gè)參數(shù)到指定變量名 |
PDOStatement::bindValue | 把一個(gè)值綁定到一個(gè)參數(shù) |
具體用法詳見(jiàn)手冊(cè)脱柱。
舉例
這里我們通過(guò)增刪改查的例子來(lái)進(jìn)行學(xué)習(xí)熟嫩。
增
一般我們?cè)鲋苯泳褪鞘褂胑xec函數(shù),通過(guò)返回的影響的行數(shù)判斷增操作是否成功完成褐捻。
$myPDOExample = new PDO("mysql:host=localhost;dbname=test","root","root");
$sql = "INSERT INTO user ('name', 'password', 'phone' ) VALUES ('用戶1', '123456', '10086'),('用戶2', '654321', '10010');";
$result = myPDOExample::exec($sql);
例子表示向user表中插入了兩條數(shù)據(jù)
不知道怎么SQL中Insert插入數(shù)據(jù)的看這里
刪
同樣也是exec
$myPDOExample = new PDO("mysql:host=localhost;dbname=test","root","root");
$sql = "DELETE FROM fruit WHERE color = 'red' ;";
$result = myPDOExample::exec($sql);
例子表示刪除fruit表中所有color的值為red的數(shù)據(jù)
改
同樣也是exec
$myPDOExample = new PDO("mysql:host=localhost;dbname=test","root","root");
$sql = "UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson' ;";
$result = myPDOExample::exec($sql);
表示把所有的LastName值為Wilson的行中的FirstName值改為Fred
查
查是重頭戲。
我們首先通過(guò)如上的步驟進(jìn)行查的準(zhǔn)備
$myPDOExample = new PDO("mysql:host=localhost;dbname=test","root","root");
$sql = "SELECT * FROM user WHERE gender='female' ;";
這條SQL表示從user表里取出所有性別gender是女female的行的所有數(shù)據(jù)(即*)椅邓。
我們通過(guò)query先對(duì)它進(jìn)行查詢操作柠逞,并獲得一個(gè)PDOStatement對(duì)象。
$result = myPDOExample::query($sql);
這里需要根據(jù)下一步對(duì)數(shù)據(jù)的操作來(lái)選取$result的函數(shù)景馁。
$dataString = $resylt::fetch() //知道只有一個(gè)女的板壮,所以只需要取一行。
$dataArray = $resylt::fetchAll() //有好多女的合住,以數(shù)組方式全取出來(lái)并直接表達(dá)
$dataObject = $resylt::fetchObject() //有好多女的绰精,以對(duì)象方式全取出來(lái)并進(jìn)一步操作