PHP操作數(shù)據(jù)庫(kù)——PDO

本文簡(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.dllextension=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)一步操作

補(bǔ)充

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市透葛,隨后出現(xiàn)的幾起案子笨使,更是在濱河造成了極大的恐慌,老刑警劉巖僚害,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件硫椰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡萨蚕,警方通過(guò)查閱死者的電腦和手機(jī)靶草,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)岳遥,“玉大人奕翔,你說(shuō)我怎么就攤上這事『迫兀” “怎么了派继?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵宾袜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我互艾,道長(zhǎng)试和,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任纫普,我火速辦了婚禮阅悍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昨稼。我一直安慰自己节视,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布假栓。 她就那樣靜靜地躺著寻行,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匾荆。 梳的紋絲不亂的頭發(fā)上拌蜘,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音牙丽,去河邊找鬼简卧。 笑死芭挽,一個(gè)胖子當(dāng)著我的面吹牛莱没,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播礁哄,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼构罗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼铜涉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起遂唧,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤芙代,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后蠢箩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體链蕊,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年谬泌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了滔韵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡掌实,死狀恐怖陪蜻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贱鼻,我是刑警寧澤宴卖,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布滋将,位于F島的核電站,受9級(jí)特大地震影響症昏,放射性物質(zhì)發(fā)生泄漏随闽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一肝谭、第九天 我趴在偏房一處隱蔽的房頂上張望掘宪。 院中可真熱鬧,春花似錦攘烛、人聲如沸魏滚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鼠次。三九已至,卻和暖如春芋齿,著一層夾襖步出監(jiān)牢的瞬間腥寇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工觅捆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留花颗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓惠拭,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親庸论。 傳聞我的和親對(duì)象是個(gè)殘疾皇子职辅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容

  • 在剛剛接觸PHP時(shí),曾遇到過(guò)這樣一個(gè)坑聂示,就是在PHP7.0版本中無(wú)法使用mysql連接數(shù)據(jù)庫(kù)域携,當(dāng)時(shí)只好降級(jí)PHP版...
    kangyiii閱讀 2,070評(píng)論 0 1
  • Php:腳本語(yǔ)言,網(wǎng)站建設(shè)鱼喉,服務(wù)器端運(yùn)行 PHP定義:一種服務(wù)器端的HTML腳本/編程語(yǔ)言,是一種簡(jiǎn)單的秀鞭、面向?qū)ο?..
    廖馬兒閱讀 2,144評(píng)論 2 38
  • pdo類PDO是一個(gè)“數(shù)據(jù)庫(kù)訪問(wèn)抽象層”,作用是統(tǒng)一各種數(shù)據(jù)庫(kù)的訪問(wèn)接口扛禽,與mysql和mysqli的函數(shù)庫(kù)相比锋边,...
    桖辶殤閱讀 874評(píng)論 0 0
  • php與mysql的連接有三種API接口,分別是:PHP的MySQL擴(kuò)展 编曼、PHP的mysqli擴(kuò)展 豆巨、PHP數(shù)據(jù)...
    followyounger1閱讀 2,846評(píng)論 1 5
  • 今天總公司的營(yíng)銷總監(jiān)來(lái)鄭州培訓(xùn),主題是銷售掐场,那到底什么是銷售往扔,怎么銷售贩猎? 回顧自己過(guò)去的經(jīng)歷,上過(guò)的各種課程萍膛,體悟...
    小酒窩天使閱讀 142評(píng)論 0 0