国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

結緣PDO

2019-11-15 01:57:59
字體:
來源:轉載
供稿:網友
結緣PDO

起因

一直沒有注意看數據庫相關知識

幾個月之前,無意打開如下一段代碼:

被人吐槽是N年前的寫法。后來也是學習需要,單一MySQL已經不合適了。于是上網搜了一下好方法,PDO迎面而來。

誘惑

上網瀏覽時,看見了一段話:

The php Data Objects (PDO) extension defines a lightweight, consistent interface for accessing databases in PHP. Each database driver that implements the PDO interface can expose database-specific features as regular extension functions. Note that you cannot perform any database functions using the PDO extension by itself; you must use a database-specific PDO driver to access a database server.

PDO PRovides a data-access abstraction layer, which means that, regardless of which database you're using, you use the same functions to issue queries and fetch data. PDO does not provide a database abstraction; it doesn't rewrite SQL or emulate missing features. You should use a full-blown abstraction layer if you need that facility.

給出網友的翻譯

PDO擴展為PHP定義了一個訪問數據庫的輕量的,持久的接口。實現了PDO接口的每一種數據庫驅動都能以正則擴展的形式把他們各自的特色表現出來。注意;利用PDO擴展本身并不能實現任何數據庫函數。你必須使用一個特定的數據庫PDO驅動去訪問數據庫。PDO提供了一個數據訪問抽象層,這就意味著,不管你使用的是哪種數據庫,你都可以用同樣的函數去進行查詢的獲取數據。PDO并不提供數據提取,它不會重寫SQL語句,或者模仿這些功能。你需要使用一個成熟的提取層,如果你需要的話。

它可以不受數據庫特定語法限制,讓數據庫平臺切換更無痛,很誘人啊有木有

初見

工欲善其事必先利其器。php5的安裝就累述了,下面說一下關于pdo的php.ini的配置

首先,你需要知道:

在php.ini里面,分號表示注釋,去掉前面的分號就代表該功能可以用

Ok,現在打開php.ini(可以用記事本打開)

在文件里,找到以下行

extension=php_pdo.dll

extension=php_pdo_firebird.dll

extension=php_pdo_informix.dll

extension=php_pdo_mssql.dll

extension=php_pdo_mysql.dll

extension=php_pdo_oci.dll

extension=php_pdo_oci8.dll

extension=php_pdo_odbc.dll

extension=php_pdo_pgsql.dll

extension=php_pdo_sqlite.dll

把前面的分號去掉(我這里已經去掉)就可以了。

在配置php.ini到時候要小心,修改前先備份。我曾經改錯一次,使得php無法工作,還愣是不知道哪里有問題。。

這樣子,pdo就安裝完畢了

把玩

第一件事當然是想看看怎么連接數據庫啦

它有一個PDO類,說是創建一個新的pdo對象,應該是這個了

看看語法,第一個語句出來啦~/(≧▽≦)/~

在里面,mysql就是數據庫類型,localost是主機名,test是數據庫名,dbuser是用戶名,dbpass是密碼

請注意try/catch代碼塊,你應該始終將您 PDO 的操作封裝在一個 try/catch 代碼塊內并使用異常機制

下面有一個網友的語句圖,把我的集合成一句話

下面是錯誤處理

PDO 提供了3中不同的錯誤處理策略。

PDO::ERRMODE_SILENT

這是默認使用的模式。PDO會在statement和database對象上設定簡單的錯誤代號,你可以使用PDO->errorCode() 和 PDO->errorInfo() 方法檢查錯誤;如果錯誤是在對statement對象進行調用時導致的,你就可以在那個對象上使用 PDOStatement->errorCode() 或 PDOStatement->errorInfo() 方法取得錯誤信息。而如果錯誤是在對database對象調用時導致的,你就應該在這個database對象上調用那兩個方法。

PDO::ERRMODE_WARNING

作為設置錯誤代號的附加,PDO將會發出一個傳統的E_WARNING信息。這種設置在除錯和調試時是很有用的,如果你只是想看看發生了什么問題而不想中斷程序的流程的話。

PDO::ERRMODE_EXCEPTION

作為設置錯誤代號的附件,PDO會拋出一個PDOException異常并設置它的屬性來反映錯誤代號和錯誤信息。這中設置在除錯時也是很有用的,因為他會有效的"放大(blow up)"腳本中的出錯點,非??焖俚闹赶蛞粋€你代碼中可能出錯區域。(記?。喝绻惓е履_本中斷,事務處理回自動回滾。)

異常模式也是非常有用的,因為你可以使用比以前那種使用傳統的PHP風格的錯誤處理結構更清晰的結構處理錯誤,比使用安靜模式使用更少的代碼及嵌套,也能夠更加明確地檢查每個數據庫訪問的返回值。

回到上面的代碼,如果發生了錯誤,一個PDOException異常對象將被拋出,然后catch會捕捉到,然后按照開發者設定的內容進一步處理。

連接就玩到這里。。

進擊

連接之后該干什么了呢?沒錯,處理數據,要不數據庫干嘛用的。下面所有將給出兩個版本:

假設有個表zjyz

id

name

1

aaa

2

bbb

數據查詢

我們要查詢id為1的數據

MYSQL版本:

PDO版本:

誒,貌似沒差多少的樣子~~

數據更新

我們要更新id為1的數據,name值改為ccc

MYSQL版本:

PDO版本:

感覺這個exec清爽多了

刪除數據

我們要刪除id為1的數據

MYSQL版本:

PDO版本:

呵呵,還是exec返回行數

插入數據

我們要插入數據 id = 3 ,name = ccc

MYSQL版本:

PDO版本:

好玩的exec()

上面出現了很多次這個函數,現在簡單介紹一下

PDO::exec() 在一個單獨的函數調用中執行一條 SQL 語句,返回受此語句影響的行數。

PDO::exec() 不會從一條 SELECT 語句中返回結果。對于在程序中只需要發出一次的 SELECT 語句,可以考慮使用 PDO::query()。對于需要發出多次的語句,可用 PDO::prepare() 來準備一個 PDOStatement 對象并用 PDOStatement::execute() 發出語句。

總結

雖然這個技術有點老了,但是相對于陳舊的語句,依然活力四射。隨著學習的深入,樓樓還學到了很多本文沒提到的東西。謝謝各位大神啦~/(≧▽≦)/~

這些等等很多。。。所有涉及數據庫的操作也基本換成了PDO

很高興吶

技術是死的,人是活的。利用舊技術,創造新未來。

本文參考資料:

  1. 為什么你應該使用PHP PDO訪問數據庫(http://www.360doc.com/content/10/0927/10/2646631_56718095.shtml)
  2. PHP5中PDO的簡單使用

    (http://m.survivalescaperooms.com/xiaochaohuashengmi/archive/2010/08/12/1797753.html)

  3. PDO::exec

    (http://php.net/manual/zh/pdo.exec.php)

版權所有


上一篇:centos-yum-lamp環境

下一篇:smarty小記

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 奈曼旗| 美姑县| 新化县| 长沙市| 静宁县| 通榆县| 文山县| 柏乡县| 昭觉县| 金乡县| 江油市| 黄冈市| 长泰县| 西乌珠穆沁旗| 周至县| 方正县| 阿瓦提县| 陆良县| 象山县| 武隆县| 奈曼旗| 开化县| 平湖市| 江都市| 张家界市| 沾益县| 昌邑市| 黄石市| 石首市| 江都市| 连江县| 内丘县| 马龙县| 抚远县| 宁明县| 左权县| 怀远县| 仙居县| 保靖县| 梁平县| 夏津县|