PHP PDO擴展

一、簡介

PDO擴展為PHP訪問數(shù)據(jù)庫定義了一套輕量級的接口蛔翅,PHP通過調(diào)用接口,可以很方便的實現(xiàn)數(shù)據(jù)的增刪改查位谋。

二山析、數(shù)據(jù)庫連接

1. 連接mysql

$host = '127.0.0.1';
$port = '8080';
$db_name = 'test';
$charset = 'utf8';
$db_user = 'root';
$db_passwd = '123456';
$dsn = "mysql:host = $host; port = $port; dbname = $db_name; charset = $charset";
try {
  $db = new PDO($dsn, $db_user, $db_passwd);
} catch (PDOException $e) {
  echo "Error:" . $e->getMessage();
  die();
}

數(shù)據(jù)庫連接成功后,會返回一個PDO類的實例對象掏父。此處的數(shù)據(jù)庫連接不是長連接笋轨,當(dāng)腳本執(zhí)行結(jié)束后,便會斷開數(shù)據(jù)庫連接赊淑;如果想使用數(shù)據(jù)庫的長連接服務(wù)爵政,則需要設(shè)置PDO的ATTR_PERSISTENT屬性。

2. 長連接

try {
  $db = new PDO($dsn, $db_user, $db_passwd, array(PDO::ATTR_PERSISTENT => true));
} catch (PDOException $e) {
  echo "Error:" . $e->getMessage();
  die();
}

三陶缺、常用的PDO類方法

1. PDO::query()

函數(shù)功能:query()方法主要用來執(zhí)行SELECT語句完成查詢操作并钾挟,返回結(jié)果集
函數(shù)原型:PDOStatement PDO::query ( string $sql )
參數(shù)說明:
(1) sql:原生的sql語句
返回值:如果成功,返回PDOStatement類對象饱岸,可以理解為結(jié)果集掺出;否則,返回FALSE

2.PDO::exec()

函數(shù)功能:exec()方法主要用來執(zhí)行DELETE和UPDATE語句苫费,并返回受影響的行數(shù)
函數(shù)原型:int PDO::exec(string $sql)
參數(shù)說明:
(1) sql:原生的sql語句
返回值:返回受影響的行數(shù)

3.PDO::prepare()

函數(shù)功能:準(zhǔn)備執(zhí)行指定的sql語句汤锨,返回結(jié)果集;prepare()方法經(jīng)常用來實現(xiàn)參數(shù)綁定
函數(shù)原型:PDOStatement PDO::prepare(string $sql)
參數(shù)說明:
(1) sql:原生的sql語句
返回值:如果成功百框,返回PDO::Startement類對象闲礼;否則,返回FALSE

4.PDO::lastInsertId()

函數(shù)功能:獲取最后插入的記錄的自增id
函數(shù)原型:string PDO::lastInsertId()
返回值:如果成功,返回最后插入的記錄的自增id

四柬泽、常用的PDOStatement類方法

1.PDOStatement::bindParam()

函數(shù)功能:bindParam()方法常用來實現(xiàn)單個參數(shù)的綁定慎菲,負責(zé)將變量綁定到指定的參數(shù)
函數(shù)原型:bool PDOStatement::bindParam(mixed $param, mixed &$var [, $data_type])
參數(shù)說明:
(1) param:參數(shù)名,如果采用“:name”形式的占位符聂抢,則param為“:name”形式的參數(shù)名钧嘶,如果采用“?”形式的占位符琳疏,則param為以1開始的索引
(2) var:需要綁定的變量
(3) data_type:參數(shù)的類型有决,使用PDO::PARAM_*常量來指定參數(shù)類型,默認為PDO::PARAM_STR
返回值:成功空盼,返回TRUE书幕;失敗,返回FALSE

2.PDOStatement::bindValue()

函數(shù)功能:bindValue()方法常用來實現(xiàn)單個參數(shù)的綁定揽趾,負責(zé)將參數(shù)綁定到指定的變量或者值
函數(shù)原型:bool PDOStatement::bindValue(mixed $param, mixed $var [, $data_type])
參數(shù)說明:
(1) param:參數(shù)名台汇,如果采用“:name”形式的占位符,則param為“:name”形式的參數(shù)名篱瞎,如果采用“苟呐?”形式的占位符,則param為以1開始的索引
(2) var:需要綁定的變量或者值
(3) data_type:參數(shù)的類型俐筋,使用PDO::PARAM_*常量來指定參數(shù)類型牵素,默認為PDO::PARAM_STR
返回值:成功,返回TRUE澄者;失敗笆呆,返回FALSE
bindParam()和bindValue()的區(qū)別:
(1) bindParam()方法只能綁定變量而不能綁定值
(2) bindParam()方法采用引用的方式將變量綁定到占位符上,并且只有execute()方法被調(diào)用時粱挡,變量值才真正的傳遞到參數(shù)

3.PDOStatement::execute()

函數(shù)功能:執(zhí)行預(yù)處理的語句
函數(shù)原型:bool PDOStatement::execute (array $params)
參數(shù)說明:params為關(guān)聯(lián)數(shù)組赠幕,用來實現(xiàn)多個參數(shù)的綁定
返回值:成功,返回TRUE询筏;失敗榕堰,返回FALSE

4.PDOStatement::fetch()

函數(shù)功能:從結(jié)果集中獲取一行記錄,并將指針指向下一行記錄
函數(shù)原型:mixed PDOStatement::fetch(int $fetch_style)
函數(shù)參數(shù):
(1) fetch_style:控制記錄如何返回給調(diào)用者嫌套,此值必須是 PDO::FETCH_* 系列常量中的一個
返回值:返回值依賴于數(shù)據(jù)提取類(常見的是返回一維數(shù)組)局冰;如果失敗,返回FALSE

常用的PDO::FETCH_* 系列常量:
PDO::FETCH_ASSOC:返回一個索引為結(jié)果集列名的關(guān)聯(lián)數(shù)組
PDO::FETCH_NUM:返回一個索引為以0開始的索引數(shù)組
PDO::FETCH_BOTH(默認):返回一個索引為結(jié)果集列名和以0開始的列號的數(shù)組灌危,即采用兩種形式返回
PDO::FETCH_OBJ:返回一個屬性名對應(yīng)結(jié)果集列名的對象

5.PDOStatement::fetchAll()

函數(shù)功能:從結(jié)果集中獲取所有記錄
函數(shù)原型:mixed PDOStatement::fetchAll(int $fetch_style)
參數(shù)說明:
(1) fetch_style:控制記錄如何返回給調(diào)用者,此值必須是 PDO::FETCH_* 系列常量中的一個
返回值:返回值依賴于數(shù)據(jù)提取類(常見的是返回二維數(shù)組)碳胳;如果失敗勇蝙,返回FALSE

五、查詢操作

(1) 查詢操作
$sql = "SELECT name, age, sex FROM user WHERE id = $id";
$db->query($sql)->fetch(PDO::FETCH_ASSOC);

(2) 參數(shù)綁定(單個參數(shù))
$sql = "SELECT name, age, sex FROM user WHERE id = :id";
$command = $db->prepare($sql);
$command->bindParam(':id', $id, PDO::PARAM_INT);
$command->execute();

(3) 參數(shù)綁定(多個參數(shù))
$sql = "SELECT * FROM user WHERE id = :id AND age = :age";
$command = $db->prepare($sql);
$command->execute(array(':id' => $id, ':age' => $age));

六挨约、插入操作

$sql = "INSERT INTO user (name, age, sex) VALUES (:name, :age, :sex)";
$command = $db->prepare($sql);
$command->execute(array(':name' => $name, ':age' => $age, ':sex' => $sex));

七味混、更新操作

$sql = "UPDATE user SET name = :name, age = :age, sex = :sex WHERE id = :id";
$command = $db->prepare($sql);
$command->execute(array(':name' => $name, ':age' => $age, ':sex' => $sex, ':id' => $id));

八产雹、刪除操作

$sql = "DELETE FROM user WHERE id = :id";
$command = $db->prepare($sql);
$command->execute(array(':id' => $id));
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市翁锡,隨后出現(xiàn)的幾起案子蔓挖,更是在濱河造成了極大的恐慌,老刑警劉巖馆衔,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘟判,死亡現(xiàn)場離奇詭異,居然都是意外死亡角溃,警方通過查閱死者的電腦和手機拷获,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來减细,“玉大人匆瓜,你說我怎么就攤上這事∥打颍” “怎么了驮吱?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長萧吠。 經(jīng)常有香客問我左冬,道長,這世上最難降的妖魔是什么怎憋? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任又碌,我火速辦了婚禮,結(jié)果婚禮上绊袋,老公的妹妹穿的比我還像新娘毕匀。我一直安慰自己,他們只是感情好癌别,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布皂岔。 她就那樣靜靜地躺著,像睡著了一般展姐。 火紅的嫁衣襯著肌膚如雪躁垛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天圾笨,我揣著相機與錄音教馆,去河邊找鬼。 笑死擂达,一個胖子當(dāng)著我的面吹牛土铺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼悲敷,長吁一口氣:“原來是場噩夢啊……” “哼究恤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起后德,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤部宿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瓢湃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體理张,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年箱季,在試婚紗的時候發(fā)現(xiàn)自己被綠了涯穷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡藏雏,死狀恐怖拷况,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掘殴,我是刑警寧澤赚瘦,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站奏寨,受9級特大地震影響起意,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜病瞳,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一揽咕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧套菜,春花似錦亲善、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至戏溺,卻和暖如春渣蜗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旷祸。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工耕拷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人托享。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓骚烧,卻偏偏與公主長得像控淡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子止潘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

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

  • PDO:php數(shù)據(jù)抽象層操作數(shù)據(jù)庫,簡單理解就是一個用于操作數(shù)據(jù)庫的對象辫诅; pdo原理 PDO主要分為三大類: P...
    DragonRat閱讀 783評論 0 0
  • pdo類PDO是一個“數(shù)據(jù)庫訪問抽象層”凭戴,作用是統(tǒng)一各種數(shù)據(jù)庫的訪問接口,與mysql和mysqli的函數(shù)庫相比炕矮,...
    桖辶殤閱讀 874評論 0 0
  • PDO概述 以往,PHP對不同的數(shù)據(jù)庫有著不同支持的擴展函數(shù),如果在項目中要切換數(shù)據(jù)庫,則要進行相當(dāng)于返工重構(gòu)的工...
    LittleTrue閱讀 827評論 0 0
  • 我站在樓梯間 看著無云的天么夫。 忽然 寂寞掠過我的身邊 回眸 又看了我一眼。 離開 只留下我與空間
    半月仙河北廊坊閱讀 343評論 1 11
  • 基本信息 時間:20170515地點:車里評分:★★★★簡評:一部有啟發(fā)性的電影肤视,雖然中間和結(jié)尾有點無聊档痪。不過還是...
    傻宅一生閱讀 2,054評論 0 0