免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

如何通過(guò)PDO擴(kuò)展與MySQL數(shù)據(jù)庫(kù)交互

如何通過(guò)PDO擴(kuò)展與MySQL數(shù)據(jù)庫(kù)交互,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

目前創(chuàng)新互聯(lián)已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、額濟(jì)納網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

今天我們來(lái)看看另一個(gè) PHP 內(nèi)置的數(shù)據(jù)庫(kù)擴(kuò)展 —— PDO,其全稱是 PHP Data Objects,即 PHP 數(shù)據(jù)對(duì)象。

 

1、PDO 簡(jiǎn)介與安裝

PDO 為 PHP 訪問(wèn)數(shù)據(jù)庫(kù)定義了一個(gè)輕量級(jí)的一致接口,因此它提供的是一個(gè)數(shù)據(jù)訪問(wèn)抽象層,本身并不能實(shí)現(xiàn)任何數(shù)據(jù)庫(kù)交互功能,必須使用一個(gè)具體數(shù)據(jù)庫(kù)的 PDO 驅(qū)動(dòng)來(lái)訪問(wèn)數(shù)據(jù)庫(kù)服務(wù),這些具體數(shù)據(jù)庫(kù)驅(qū)動(dòng)包括 MySQL、PostgreSQL、SQLite、SQL Server、Oracle 等,因此 PDO 是一個(gè)更加標(biāo)準(zhǔn)、更加通用的數(shù)據(jù)庫(kù)擴(kuò)展,而且完全是面向?qū)ο箫L(fēng)格的,目前,在各個(gè)主流 PHP 框架中,PDO 已經(jīng)成為了構(gòu)建數(shù)據(jù)庫(kù)交互的基礎(chǔ)組件,包括 Laravel 框架,也是基于 PDO 擴(kuò)展提供數(shù)據(jù)庫(kù)訪問(wèn)功能。

我們之前推薦的 PHP 本地集成開(kāi)發(fā)環(huán)境都集成了對(duì) PDO 擴(kuò)展的支持(以下是 Laragon 預(yù)裝的 PHP 擴(kuò)展):

如何通過(guò)PDO擴(kuò)展與MySQL數(shù)據(jù)庫(kù)交互  
PHP 擴(kuò)展

并且可以看到,除了 PDO 擴(kuò)展外,還有一個(gè)與之匹配的具體數(shù)據(jù)庫(kù)擴(kuò)展 pdo_mysql,有了這個(gè)具體擴(kuò)展,才能訪問(wèn) MySQL 數(shù)據(jù)庫(kù)。另外,PDO 提供了統(tǒng)一的數(shù)據(jù)庫(kù)訪問(wèn)接口,所以實(shí)現(xiàn)了 PDO 接口的具體數(shù)據(jù)庫(kù)擴(kuò)展可以通過(guò)完全一樣的方法訪問(wèn)數(shù)據(jù)庫(kù),這樣一來(lái),如果應(yīng)用需要切換數(shù)據(jù)庫(kù),就不需要對(duì)數(shù)據(jù)庫(kù)操作代碼進(jìn)行重構(gòu),僅憑這一點(diǎn),就可以扔掉 MySQLi 擴(kuò)展,投入 PDO 的懷抱了。

如果安裝過(guò) Laradock,可以啟動(dòng) workspace 容器,然后查看其預(yù)裝的 PHP 擴(kuò)展,可以看到,它包含更多的具體 PDO 數(shù)據(jù)庫(kù)驅(qū)動(dòng)支持:

如何通過(guò)PDO擴(kuò)展與MySQL數(shù)據(jù)庫(kù)交互  
PHP 擴(kuò)展

其中 pdo_pgsql 表示 PostgresSQL 數(shù)據(jù)庫(kù)驅(qū)動(dòng),pdo_sqlite 表示 SQLite 數(shù)據(jù)庫(kù)驅(qū)動(dòng)。

 

建立數(shù)據(jù)庫(kù)連接與基本查詢

在我們的教程中,還是選擇以 MySQL 為例進(jìn)行演示。

要通過(guò) PDO 擴(kuò)展建立數(shù)據(jù)庫(kù)連接,直接實(shí)例化 PDO 對(duì)象即可,我們編寫一段簡(jiǎn)單的示例代碼如下(在 php_learning/mysql 目錄下新建 pdo.php 存儲(chǔ)代碼):

<?php

// 設(shè)置連接屬性
$dsn = 'mysql:host=127.0.0.1;port=3306;dbname=test;charset=utf8mb4';
$user = 'root';
$pass = 'root';

try {
    // 建立連接
    $pdo = new PDO($dsn, $user, $pass);
    // 執(zhí)行 SQL 查詢
    $sql = $pdo->quote('SELECT * FROM `post` ORDER BY `id` DESC');
    $res = $pdo->query($sql);
    // 打印查詢結(jié)果
    echo '<pre>';
    foreach ($res as $row) {
        print_r($row);
    }
} catch (PDOException $exception) {
    // 如果數(shù)據(jù)庫(kù)操作出現(xiàn)異常,則捕獲并打印
    printf("Error: %s\n", $exception->getMessage());
} finally {
    // 釋放 PDO 連接實(shí)例
    $pdo = null;
}
 

在實(shí)例化 PDO 對(duì)象創(chuàng)建數(shù)據(jù)庫(kù)連接時(shí),至少需要傳入三個(gè)字符串類型參數(shù),第一個(gè)參數(shù)包含了數(shù)據(jù)庫(kù)主機(jī)信息,比如數(shù)據(jù)庫(kù)驅(qū)動(dòng)類型(這里是 mysql)、IP地址(本地地址是 127.0.0.1)、端口號(hào)(可選,默認(rèn)是 3306)、要連接的數(shù)據(jù)庫(kù)名稱(test)、字符編碼信息(utf8mb4)等,第二個(gè)參數(shù)是用戶名,第三個(gè)參數(shù)是密碼。

接下來(lái),我們就可以調(diào)用 PDO 對(duì)象實(shí)例 $pdo 上的 query 方法執(zhí)行指定 SQL 語(yǔ)句與數(shù)據(jù)庫(kù)進(jìn)行交互了(增刪改查),不過(guò)在此之前,我們先調(diào)用了 quote 方法對(duì)查詢 SQL 語(yǔ)句進(jìn)行轉(zhuǎn)義,該函數(shù)的功能類似 mysqli_escape_string

執(zhí)行完 SQL 查詢后,會(huì)返回一個(gè)查詢結(jié)果集,可以通過(guò)循環(huán)遍歷打印該結(jié)果。

此外,通過(guò) PDO 擴(kuò)展進(jìn)行數(shù)據(jù)庫(kù)連接和查詢操作如果出現(xiàn)錯(cuò)誤,會(huì)拋出異常,為了增加程序的健壯性,我們?cè)谕ㄟ^(guò) try...catch... 語(yǔ)句捕獲 PDOException 異常,并打印錯(cuò)誤信息,最后通過(guò) finally 語(yǔ)句釋放 PDO 對(duì)象實(shí)例,因?yàn)樵撜Z(yǔ)句塊不管是否拋出異常都會(huì)執(zhí)行。

運(yùn)行 php -S localhost:9000 啟動(dòng)內(nèi)置 HTTP 服務(wù)器進(jìn)行測(cè)試,在瀏覽器中訪問(wèn) http://localhost:9000/mysql/pdo.php,即可看到正常的打印結(jié)果:

如何通過(guò)PDO擴(kuò)展與MySQL數(shù)據(jù)庫(kù)交互  
數(shù)據(jù)庫(kù)查詢結(jié)果

我們修改下上述代碼中的連接信息,比如將密碼值調(diào)整為 test,這個(gè)時(shí)候就會(huì)捕獲到 PDO 異常,并打印錯(cuò)誤消息:

如何通過(guò)PDO擴(kuò)展與MySQL數(shù)據(jù)庫(kù)交互  
數(shù)據(jù)庫(kù)連接出錯(cuò)

注:錯(cuò)誤信息中的 IP 地址是 MySQL Docker 容器內(nèi)部的 IP 地址。可以忽略,這個(gè)報(bào)錯(cuò)是密碼錯(cuò)誤,而不是 IP 地址的問(wèn)題。

看完上述內(nèi)容,你們掌握如何通過(guò)PDO擴(kuò)展與MySQL數(shù)據(jù)庫(kù)交互的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)頁(yè)名稱:如何通過(guò)PDO擴(kuò)展與MySQL數(shù)據(jù)庫(kù)交互
當(dāng)前地址:http://m.newbst.com/article24/jeioje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)標(biāo)簽優(yōu)化云服務(wù)器微信小程序域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)