亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

詳解PHP PDO簡單教程

2024-05-05 00:09:18
字體:
來源:轉載
供稿:網友

大約 80% 的 Web 應用程序由 PHP 提供支持。類似地,SQL 也是如此。PHP 5.5 版本之前,我們有用于訪問 MySQL 數據庫的 mysql_ 命令,但由于安全性不足,它們最終被棄用。

棄用這件事是發生在 2013 年的 PHP 5.5 上,我寫這篇文章的時間是 2018 年,PHP 版本為 7.2。mysql_ 的棄用帶來了訪問數據庫的兩種主要方法:mysqli 和 PDO 庫。

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

 

  PDO MySQLi
數據庫支持 12 種驅動 只有 MySQL
范例 OOP 過程 + OOP
預處理語句(客戶端側) Yes No
1命名參數 Yes No

 

現在我想對于大多數開發人員來說,PDO 是首選的原因已經很清楚了。所以讓我們深入研究它,并希望在本文中盡量涵蓋關于 PDO 你需要的了解的。

連接

第一步是連接到數據庫,由于 PDO 是完全面向對象的,所以我們將使用 PDO 類的實例。

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

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

之后,正如你在上面的代碼中看到的,我們創建了 DSN 變量,DSN 變量只是一個保存數據庫信息的變量。對于一些在外部服務器上運行 MySQL 的人,你還可以通過提供一個 port=$port_number 來調整端口號。

最后,你可以創建一個 PDO 類的實例,我使用了 $conn 變量,并提供了 $dsn、$user、$pass 參數。如果你遵循這些步驟,你現在應該有一個名為 $conn 的對象,它是 PDO 連接類的一個實例。現在是時候進入數據庫并運行一些查詢。

一個簡單的 SQL 查詢

現在讓我們運行一個簡單的 SQL 查詢。

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

這是使用 PDO 運行查詢的最簡單形式。我們首先創建了一個名為 tis(TheITStuff 的縮寫 )的變量,然后你可以看到我們使用了創建的 $conn 對象中的查詢函數。

然后我們運行一個 while 循環并創建了一個 $row 變量來從 $tis 對象中獲取內容,最后通過調用列名來顯示每一行。

很簡單,不是嗎?現在讓我們來看看預處理語句。

預處理語句

預處理語句是人們開始使用 PDO 的主要原因之一,因為它提供了可以阻止 SQL 注入的語句。

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

位置參數

讓我們看一個使用位置參數的查詢示例。

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

在上面的例子中,我們放置了兩個問號,然后使用 bindValue() 函數將值映射到查詢中。這些值綁定到語句問號中的位置。

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

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

命名參數

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

$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 作為占位符,然后將變量映射到它們。冒號在參數之前使用,讓 PDO 知道該位置是一個變量,這非常重要。

你也可以類似地使用 bindValue() 來使用命名參數直接映射值。

獲取數據

PDO 在獲取數據時非常豐富,它實際上提供了許多格式來從數據庫中獲取數據。

你可以使用 PDO::FETCH_ASSOC 來獲取關聯數組,PDO::FETCH_NUM 來獲取數字數組,使用 PDO::FETCH_OBJ 來獲取對象數組。

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

你可以看到我使用了 fetchAll,因為我想要所有匹配的記錄。如果只需要一行,你可以簡單地使用 fetch。

現在我們已經獲取了數據,現在是時候循環它了,這非常簡單。

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

你可以看到,因為我請求了關聯數組,所以我正在按名稱訪問各個成員。

雖然在定義希望如何傳輸遞數據方面沒有要求,但在定義 $conn 變量本身時,實際上可以將其設置為默認值。

你需要做的就是創建一個 $options 數組,你可以在其中放入所有默認配置,只需在 $conn 變量中傳遞數組即可。

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

這是一個非常簡短和快速的 PDO 介紹,我們很快就會制作一個高級教程。如果你在理解本教程的任何部分時遇到任何困難,請在評論部分告訴我,我會在那你為你解答。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲情99在线| 国模吧一区二区| 日韩极品精品视频免费观看| 成人黄色影片在线| 亚洲人精品午夜在线观看| 欧美人交a欧美精品| 久久亚洲综合国产精品99麻豆精品福利| 97香蕉超级碰碰久久免费软件| 久久香蕉国产线看观看av| 亚洲成色www8888| 精品久久久av| 欧美夜福利tv在线| 九色精品免费永久在线| 亚洲新中文字幕| 亚洲精品日韩久久久| 日韩黄色在线免费观看| 成人性生交xxxxx网站| 日韩精品电影网| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美成人免费小视频| 成人国产精品av| 久久久女女女女999久久| 91久久精品国产91性色| 久久香蕉国产线看观看网| 亚洲精品久久久久久久久久久久久| 成人有码在线播放| 欧美性色xo影院| 国产精品成av人在线视午夜片| 欧美一区二区视频97| 2019精品视频| 欧美成人免费全部| 亚洲视频一区二区三区| 欧美精品制服第一页| 国产精品日日摸夜夜添夜夜av| 亚洲a成v人在线观看| 国内偷自视频区视频综合| 狠狠操狠狠色综合网| 国产91色在线|免| 日韩精品中文字幕有码专区| 91亚洲精品久久久久久久久久久久| 国产精品一区二区久久精品| 国产精品久久久久久av下载红粉| 成人精品视频久久久久| 久久99久久99精品免观看粉嫩| 亚洲欧美自拍一区| 国产精品一区二区电影| 色综合天天综合网国产成人网| 久久视频国产精品免费视频在线| 色婷婷综合成人| 亚洲精品美女在线观看播放| 久青草国产97香蕉在线视频| 激情懂色av一区av二区av| 精品久久久久久久久久久久久| 亚洲va欧美va国产综合剧情| 91性高湖久久久久久久久_久久99| 国内精品久久久久久影视8| 精品久久久久久国产91| 992tv成人免费影院| 亚洲黄色www网站| 亚洲第一网站免费视频| 亚洲一区中文字幕在线观看| 日本成人免费在线| 国产精品96久久久久久| 8090成年在线看片午夜| 久久久久国色av免费观看性色| 亚洲国产精品女人久久久| 国产一区二区美女视频| 亚洲一区二区久久久久久久| 91亚洲精品久久久| 日韩在线观看免费全| 欧美伦理91i| 欧美专区在线播放| 亚洲影院色在线观看免费| 国产91精品久| 亚洲国产精品成人精品| 97国产suv精品一区二区62| 中日韩美女免费视频网站在线观看| 国产香蕉97碰碰久久人人| 91久久久久久久一区二区| 久久手机免费视频| 国产精品自拍偷拍| 91深夜福利视频| 欧美性生交xxxxxdddd| 亚洲天堂av女优| 欧美xxxx做受欧美.88| 欧美亚洲在线播放| 欧美国产第二页| 成人午夜在线观看| 亚洲午夜久久久影院| 国产亚洲欧洲在线| 精品国产成人av| 亚洲图中文字幕| 日本19禁啪啪免费观看www| 欧美日韩国产91| 深夜福利日韩在线看| 日韩欧美在线视频免费观看| 久久伊人精品视频| 91色琪琪电影亚洲精品久久| 日韩电影在线观看免费| 国产精品久久久久久久久久久不卡| 亚洲国产欧美久久| 欧美xxxx综合视频| 成人综合网网址| 在线观看国产欧美| 欧美国产亚洲精品久久久8v| 91中文字幕在线观看| 日韩av在线看| 国产精品私拍pans大尺度在线| 中文.日本.精品| 精品成人国产在线观看男人呻吟| 国产一区二区三区毛片| 8050国产精品久久久久久| 亚洲性线免费观看视频成熟| 一区二区在线免费视频| 国产成人午夜视频网址| 中文精品99久久国产香蕉| 久久精品精品电影网| 91精品国产99久久久久久| 久久国产精品久久久久久久久久| 欧美日韩国产丝袜美女| 国产精品中文字幕在线观看| 亚洲高清免费观看高清完整版| 国产美女精品视频| 欧美亚洲在线观看| 91久久国产综合久久91精品网站| 亚洲乱码av中文一区二区| 国产91av在线| 欧美中文在线观看| 国产极品精品在线观看| 欧洲成人免费视频| 欧美肥臀大乳一区二区免费视频| 国产成人亚洲综合青青| 在线中文字幕日韩| 成人黄色在线免费| 亚洲va欧美va在线观看| 狠狠操狠狠色综合网| 久久中文字幕在线视频| 中文亚洲视频在线| 伊人青青综合网站| 欧美日韩另类视频| 欧美国产日产韩国视频| 午夜精品一区二区三区在线视频| 亚洲精品美女网站| 国产欧美日韩专区发布| 91精品国产沙发| 亚洲人成网站色ww在线| 欧美日韩国产在线播放| 人人爽久久涩噜噜噜网站| 韩国精品久久久999| 日本久久91av| 久久精品这里热有精品| 日韩精品在线观看一区二区| 国产美女久久久| 国产亚洲视频中文字幕视频| 91精品国产免费久久久久久| 亚洲一区二区三区sesese| 九九热精品视频在线播放| 久久久国产精品亚洲一区| 国产精品黄色av| 中文字幕亚洲欧美一区二区三区| 国语自产精品视频在免费| 欧美成人一区在线| 国产男女猛烈无遮挡91| 国产精品扒开腿做爽爽爽的视频|