目錄
结缘PDO,结缘网
首頁 php教程 php手册 结缘PDO,结缘网

结缘PDO,结缘网

Jun 13, 2016 am 09:19 AM
pdo 打開 資料庫 注意 相關 知識

结缘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的安装就累述了,下面说一下关于pdophp.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会在statementdatabase对象上设定简单的错误代号,你可以使用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

 

数据查询

我们要查询id1的数据

MYSQL版本:

 

PDO版本:

 

诶,貌似没差多少的样子~~

 

数据更新

我们要更新id1的数据,name值改为ccc

MYSQL版本:

 

PDO版本:

感觉这个exec清爽多了

 

删除数据

我们要删除id1的数据

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

很高兴呐

技术是死的,人是活的。利用旧技术,创造新未来。

本文参考资料:

 

版权所有

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

iOS 18 新增「已復原」相簿功能 可找回遺失或損壞的照片 iOS 18 新增「已復原」相簿功能 可找回遺失或損壞的照片 Jul 18, 2024 am 05:48 AM

蘋果公司最新發布的iOS18、iPadOS18以及macOSSequoia系統為Photos應用程式增添了一項重要功能,旨在幫助用戶輕鬆恢復因各種原因遺失或損壞的照片和影片。這項新功能在Photos應用的"工具"部分引入了一個名為"已恢復"的相冊,當用戶設備中存在未納入其照片庫的圖片或影片時,該相冊將自動顯示。 "已恢復"相簿的出現為因資料庫損壞、相機應用未正確保存至照片庫或第三方應用管理照片庫時照片和視頻丟失提供了解決方案。使用者只需簡單幾步

Hibernate 如何實作多型映射? Hibernate 如何實作多型映射? Apr 17, 2024 pm 12:09 PM

Hibernate多態映射可映射繼承類別到資料庫,提供以下映射類型:joined-subclass:為子類別建立單獨表,包含父類別所有欄位。 table-per-class:為子類別建立單獨資料表,僅包含子類別特有列。 union-subclass:類似joined-subclass,但父類別表聯合所有子類別列。

在PHP中使用MySQLi建立資料庫連線的詳盡教學 在PHP中使用MySQLi建立資料庫連線的詳盡教學 Jun 04, 2024 pm 01:42 PM

如何在PHP中使用MySQLi建立資料庫連線:包含MySQLi擴充(require_once)建立連線函數(functionconnect_to_db)呼叫連線函數($conn=connect_to_db())執行查詢($result=$conn->query())關閉連線( $conn->close())

深入解析HTML如何讀取資料庫 深入解析HTML如何讀取資料庫 Apr 09, 2024 pm 12:36 PM

HTML無法直接讀取資料庫,但可以透過JavaScript和AJAX實作。其步驟包括建立資料庫連線、發送查詢、處理回應和更新頁面。本文提供了利用JavaScript、AJAX和PHP來從MySQL資料庫讀取資料的實戰範例,展示如何在HTML頁面中動態顯示查詢結果。此範例使用XMLHttpRequest建立資料庫連接,發送查詢並處理回應,從而將資料填入頁面元素中,實現了HTML讀取資料庫的功能。

如何在PHP中處理資料庫連線錯誤 如何在PHP中處理資料庫連線錯誤 Jun 05, 2024 pm 02:16 PM

PHP處理資料庫連線報錯,可以使用下列步驟:使用mysqli_connect_errno()取得錯誤代碼。使用mysqli_connect_error()取得錯誤訊息。透過擷取並記錄這些錯誤訊息,可以輕鬆識別並解決資料庫連接問題,確保應用程式的順暢運作。

如何在 Golang 中使用資料庫回呼函數? 如何在 Golang 中使用資料庫回呼函數? Jun 03, 2024 pm 02:20 PM

在Golang中使用資料庫回呼函數可以實現:在指定資料庫操作完成後執行自訂程式碼。透過單獨的函數新增自訂行為,無需編寫額外程式碼。回調函數可用於插入、更新、刪除和查詢操作。必須使用sql.Exec、sql.QueryRow或sql.Query函數才能使用回呼函數。

如何用 Golang 連接遠端資料庫? 如何用 Golang 連接遠端資料庫? Jun 01, 2024 pm 08:31 PM

透過Go標準庫database/sql包,可以連接到MySQL、PostgreSQL或SQLite等遠端資料庫:建立包含資料庫連接資訊的連接字串。使用sql.Open()函數開啟資料庫連線。執行SQL查詢和插入操作等資料庫操作。使用defer關閉資料庫連線以釋放資源。

如何在 Golang 中將 JSON 資料保存到資料庫中? 如何在 Golang 中將 JSON 資料保存到資料庫中? Jun 06, 2024 am 11:24 AM

可以透過使用gjson函式庫或json.Unmarshal函數將JSON資料儲存到MySQL資料庫中。 gjson函式庫提供了方便的方法來解析JSON字段,而json.Unmarshal函數需要一個目標類型指標來解組JSON資料。這兩種方法都需要準備SQL語句和執行插入操作來將資料持久化到資料庫中。

See all articles