最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解PHP PDO簡(jiǎn)單教程

 更新時(shí)間:2019年05月28日 09:21:53   作者:Rishabh Kandar  
這篇文章主要介紹了詳解PHP PDO簡(jiǎn)單教程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

大約 80% 的 Web 應(yīng)用程序由 PHP 提供支持。類(lèi)似地,SQL 也是如此。PHP 5.5 版本之前,我們有用于訪問(wèn) MySQL 數(shù)據(jù)庫(kù)的 mysql_ 命令,但由于安全性不足,它們最終被棄用。

棄用這件事是發(fā)生在 2013 年的 PHP 5.5 上,我寫(xiě)這篇文章的時(shí)間是 2018 年,PHP 版本為 7.2。mysql_ 的棄用帶來(lái)了訪問(wèn)數(shù)據(jù)庫(kù)的兩種主要方法:mysqli 和 PDO 庫(kù)。

雖然 mysqli 庫(kù)是官方指定的,但由于 mysqli 只能支持 mysql 數(shù)據(jù)庫(kù),而 PDO 可以支持 12 種不同類(lèi)型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,因此 PDO 獲得了更多的贊譽(yù)。此外,PDO 還有其它一些特性,使其成為大多數(shù)開(kāi)發(fā)人員的更好選擇。你可以在下表中看到一些特性比較:

  PDO MySQLi
數(shù)據(jù)庫(kù)支持 12 種驅(qū)動(dòng) 只有 MySQL
范例 OOP 過(guò)程 + OOP
預(yù)處理語(yǔ)句(客戶端側(cè)) Yes No
1命名參數(shù) Yes No

現(xiàn)在我想對(duì)于大多數(shù)開(kāi)發(fā)人員來(lái)說(shuō),PDO 是首選的原因已經(jīng)很清楚了。所以讓我們深入研究它,并希望在本文中盡量涵蓋關(guān)于 PDO 你需要的了解的。

連接

第一步是連接到數(shù)據(jù)庫(kù),由于 PDO 是完全面向?qū)ο蟮?,所以我們將使?PDO 類(lèi)的實(shí)例。

我們要做的第一件事是定義主機(jī)、數(shù)據(jù)庫(kù)名稱、用戶名、密碼和數(shù)據(jù)庫(kù)字符集。

$host = 'localhost';
$db  = 'theitstuff';
$user = 'root';
$pass = 'root';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$conn = new PDO($dsn, $user, $pass);

之后,正如你在上面的代碼中看到的,我們創(chuàng)建了 DSN 變量,DSN 變量只是一個(gè)保存數(shù)據(jù)庫(kù)信息的變量。對(duì)于一些在外部服務(wù)器上運(yùn)行 MySQL 的人,你還可以通過(guò)提供一個(gè) port=$port_number 來(lái)調(diào)整端口號(hào)。

最后,你可以創(chuàng)建一個(gè) PDO 類(lèi)的實(shí)例,我使用了 $conn 變量,并提供了 $dsn、$user、$pass 參數(shù)。如果你遵循這些步驟,你現(xiàn)在應(yīng)該有一個(gè)名為 $conn 的對(duì)象,它是 PDO 連接類(lèi)的一個(gè)實(shí)例。現(xiàn)在是時(shí)候進(jìn)入數(shù)據(jù)庫(kù)并運(yùn)行一些查詢。

一個(gè)簡(jiǎn)單的 SQL 查詢

現(xiàn)在讓我們運(yùn)行一個(gè)簡(jiǎn)單的 SQL 查詢。

$tis = $conn->query('SELECT name, age FROM students');
while ($row = $tis->fetch())
{
 echo $row['name']."\t";
 echo $row['age'];
 echo "<br>";
}

這是使用 PDO 運(yùn)行查詢的最簡(jiǎn)單形式。我們首先創(chuàng)建了一個(gè)名為 tis(TheITStuff 的縮寫(xiě) )的變量,然后你可以看到我們使用了創(chuàng)建的 $conn 對(duì)象中的查詢函數(shù)。

然后我們運(yùn)行一個(gè) while 循環(huán)并創(chuàng)建了一個(gè) $row 變量來(lái)從 $tis 對(duì)象中獲取內(nèi)容,最后通過(guò)調(diào)用列名來(lái)顯示每一行。

很簡(jiǎn)單,不是嗎?現(xiàn)在讓我們來(lái)看看預(yù)處理語(yǔ)句。

預(yù)處理語(yǔ)句

預(yù)處理語(yǔ)句是人們開(kāi)始使用 PDO 的主要原因之一,因?yàn)樗峁┝丝梢宰柚?SQL 注入的語(yǔ)句。

有兩種基本方法可供使用,你可以使用位置參數(shù)或命名參數(shù)。

位置參數(shù)

讓我們看一個(gè)使用位置參數(shù)的查詢示例。

$tis = $conn->prepare("INSERT INTO STUDENTS(name, age) values(?, ?)");
$tis->bindValue(1,'mike');
$tis->bindValue(2,22);
$tis->execute();

在上面的例子中,我們放置了兩個(gè)問(wèn)號(hào),然后使用 bindValue() 函數(shù)將值映射到查詢中。這些值綁定到語(yǔ)句問(wèn)號(hào)中的位置。

我還可以使用變量而不是直接提供值,通過(guò)使用 bindParam() 函數(shù)相同例子如下:

$name='Rishabh'; $age=20;
$tis = $conn->prepare("INSERT INTO STUDENTS(name, age) values(?, ?)");
$tis->bindParam(1,$name);
$tis->bindParam(2,$age);
$tis->execute();

命名參數(shù)

命名參數(shù)也是預(yù)處理語(yǔ)句,它將值/變量映射到查詢中的命名位置。由于沒(méi)有位置綁定,因此在多次使用相同變量的查詢中非常有效。

$name='Rishabh'; $age=20;
$tis = $conn->prepare("INSERT INTO STUDENTS(name, age) values(:name, :age)");
$tis->bindParam(':name', $name);
$tis->bindParam(':age', $age);
$tis->execute();

你可以注意到,唯一的變化是我使用 :name 和 :age 作為占位符,然后將變量映射到它們。冒號(hào)在參數(shù)之前使用,讓 PDO 知道該位置是一個(gè)變量,這非常重要。

你也可以類(lèi)似地使用 bindValue() 來(lái)使用命名參數(shù)直接映射值。

獲取數(shù)據(jù)

PDO 在獲取數(shù)據(jù)時(shí)非常豐富,它實(shí)際上提供了許多格式來(lái)從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)。

你可以使用 PDO::FETCH_ASSOC 來(lái)獲取關(guān)聯(lián)數(shù)組,PDO::FETCH_NUM 來(lái)獲取數(shù)字?jǐn)?shù)組,使用 PDO::FETCH_OBJ 來(lái)獲取對(duì)象數(shù)組。

$tis = $conn->prepare("SELECT * FROM STUDENTS");
$tis->execute();
$result = $tis->fetchAll(PDO::FETCH_ASSOC);

你可以看到我使用了 fetchAll,因?yàn)槲蚁胍衅ヅ涞挠涗?。如果只需要一行,你可以?jiǎn)單地使用 fetch。

現(xiàn)在我們已經(jīng)獲取了數(shù)據(jù),現(xiàn)在是時(shí)候循環(huán)它了,這非常簡(jiǎn)單。

foreach ($result as $lnu){
 echo $lnu['name'];
 echo $lnu['age']."<br>";
}

你可以看到,因?yàn)槲艺?qǐng)求了關(guān)聯(lián)數(shù)組,所以我正在按名稱訪問(wèn)各個(gè)成員。

雖然在定義希望如何傳輸遞數(shù)據(jù)方面沒(méi)有要求,但在定義 $conn 變量本身時(shí),實(shí)際上可以將其設(shè)置為默認(rèn)值。

你需要做的就是創(chuàng)建一個(gè) $options 數(shù)組,你可以在其中放入所有默認(rèn)配置,只需在 $conn 變量中傳遞數(shù)組即可。

$options = [
 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
$conn = new PDO($dsn, $user, $pass, $options);

這是一個(gè)非常簡(jiǎn)短和快速的 PDO 介紹,我們很快就會(huì)制作一個(gè)高級(jí)教程。如果你在理解本教程的任何部分時(shí)遇到任何困難,請(qǐng)?jiān)谠u(píng)論部分告訴我,我會(huì)在那你為你解答。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

  • WordPress主題中添加文章列表頁(yè)頁(yè)碼導(dǎo)航的PHP代碼實(shí)例

    WordPress主題中添加文章列表頁(yè)頁(yè)碼導(dǎo)航的PHP代碼實(shí)例

    這篇文章主要介紹了WordPress主題中添加文章列表頁(yè)碼導(dǎo)航的PHP代碼實(shí)例,這也是制作各種WordPress主題必備的基礎(chǔ)功能,需要的朋友可以參考下
    2015-12-12
  • Codeigniter注冊(cè)登錄代碼示例

    Codeigniter注冊(cè)登錄代碼示例

    本示例Codeigniter注冊(cè)登錄代碼源自一個(gè)codeigniter的項(xiàng)目,現(xiàn)分享下,需要的朋友可以參考下
    2014-06-06
  • Thinkphp3.2實(shí)用篇之計(jì)算型驗(yàn)證碼示例

    Thinkphp3.2實(shí)用篇之計(jì)算型驗(yàn)證碼示例

    本篇文章主要介紹了Thinkphp3.2實(shí)用篇之計(jì)算型驗(yàn)證碼示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • php函數(shù)mkdir實(shí)現(xiàn)遞歸創(chuàng)建層級(jí)目錄

    php函數(shù)mkdir實(shí)現(xiàn)遞歸創(chuàng)建層級(jí)目錄

    當(dāng)我們想在自己的站點(diǎn)中添加多級(jí)目錄時(shí),可以運(yùn)用php函數(shù)mkdir()來(lái)實(shí)現(xiàn)這個(gè)功能。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-10-10
  • php實(shí)現(xiàn)文件預(yù)覽功能

    php實(shí)現(xiàn)文件預(yù)覽功能

    這篇文章主要為大家詳細(xì)介紹了php實(shí)現(xiàn)文件預(yù)覽功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • PHP獲取學(xué)生成績(jī)的方法

    PHP獲取學(xué)生成績(jī)的方法

    這篇文章主要為大家詳細(xì)介紹了PHP獲取學(xué)生成績(jī)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • phpStudy訪問(wèn)速度慢和啟動(dòng)失敗的解決辦法

    phpStudy訪問(wèn)速度慢和啟動(dòng)失敗的解決辦法

    這篇文章主要介紹了phpStudy訪問(wèn)速度慢和啟動(dòng)失敗的解決辦法的相關(guān)資料,需要的朋友可以參考下
    2015-11-11
  • phpstudy本地環(huán)境搭建超詳細(xì)圖文教程

    phpstudy本地環(huán)境搭建超詳細(xì)圖文教程

    這篇文章主要給大家介紹了關(guān)于phpstudy本地環(huán)境搭建超詳細(xì)圖文教程的相關(guān)資料,phpStudy是集安全、高效、功能于一體且完全免費(fèi)的一鍵服務(wù)器環(huán)境搭建軟件,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • PHP 面向?qū)ο蟪绦蛟O(shè)計(jì)(oop)學(xué)習(xí)筆記(三) - 單例模式和工廠模式

    PHP 面向?qū)ο蟪绦蛟O(shè)計(jì)(oop)學(xué)習(xí)筆記(三) - 單例模式和工廠模式

    設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類(lèi)編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。
    2014-06-06
  • 最新評(píng)論

    鞍山市| 酒泉市| 吉木萨尔县| 南乐县| 连云港市| 凤山市| 荥阳市| 鄂托克前旗| 汽车| 太白县| 麻城市| 屯门区| 万山特区| 梅河口市| 九龙城区| 绵竹市| 容城县| 临高县| 双江| 江华| 冷水江市| 锡林郭勒盟| 平远县| 尚义县| 墨江| 临洮县| 磴口县| 枣庄市| 云林县| 惠水县| 离岛区| 永城市| 武威市| 岳西县| 广西| 徐水县| 苍梧县| 巴林右旗| 石泉县| 宣威市| 确山县|