2010-01-06 49 views
5

所以我一直在開發插件,通過使用get_option函數創建交互和刪除到數據庫。

我現在已經看到一些教程展示瞭如何使用從數據庫中獲取值的全局$ wpdb方法。

這兩者之間的區別是什麼,並且比另一個更好?

回答

2

使用WordPress幫手功能(不限於get_option())可以確保您的插件在新版本的WordPress進行了可能會影響您的代碼的更改時發揮作用。

在考慮編碼自己的代碼之前,建議您理解並使用他們的助手。

+0

呀喜歡它建議使用get_option()中循環,從而使而不是一個調用DB你得到20個電話。 – Tosh 2012-12-04 20:46:02

0

全局$ wpdb變量比get_option()函數更強大,因爲它允許您從wordpress中的任何表(包括所有插件表)操作和檢索數據。這使您獲得更多的權力,而不僅僅是訪問選項表。

你應該使用get_option()當你特別檢索從選項表的選項,用於插件的選項。此功能的其他變體是add_option,update_optiondelete_option。所有相關的功能都應該專門用於插件選項。

0

我以前都用過。如果你可以使用輔助函數,你應該這樣做。如果你需要做一些非常自定義的事情,你可以使用全局。我只使用全球,如果我只是必須寫我自己的查詢

+0

我使用全局'$ wpdb'在2.5版本中編寫了一個插件,網站所有者決定將其升級到2.6版本,而且整個事情變得混亂,因爲引入了修訂版本,並且頁面/帖子的副本不見蹤影。還有更多的小例子讓我遠離'$ wpdb' – 2010-01-06 23:46:48

3

爲了存儲與帖子相關的插件選項或輕量級數據,get_option(),get_post_meta()及其相關函數是理想的。對於關係數據庫活動,$ wpdb是最佳選擇。原因如下:

$ wpdb是一個基於ezSQL PHP類的類,用於與數據庫交互。一些功能包括:

1)使用$ wpdb-> prepare(),$ wpdb-> insert()和$ wpdb-> update()方法提供SQL注入保護。 get_option()是一個幫助函數,它允許您執行Key => Value對。

2)$ wpdb很容易使用。它可以以各種形式返回記錄集:$ wpdb-> get_results($ sql,ARRAY_A)一個包含返回行的Array或Associative Arrays,列名是鍵。 $ wpdb-> get_results($ sql)將返回一個對象數組,其列名稱作爲對象的屬性。 $ wpdb-> get_var($ sql)會返回一個標量結果(查詢中數據集第一行的第一列)。 $ wpdb-> get_row($ sql)將返回一行作爲對象。

3)$ WPDB允許您與數據庫中的任何表進行交互,即使在執行使用$ wpdb->查詢($ SQL)免費查詢形式

4)的WordPress將可能確保與WPDB $的互動如果他們添加對MySQL以外的數據庫的支持,則不需要更改。最初的ezSQL類旨在提供一些跨數據庫支持。

因此,如果您需要以關係方式處理數據,$ wpdb確實是WordPress的絕佳選擇。()和get_post_meta()提供了一種處理少量數據的簡單方法,或者與get_post_meta()中的特定帖子相關聯,或者與get_option()中的Key => Value對相關。

這些好事之一是,你可以保存一個序列化的數組或對象,並將數據作爲數組或對象返回。這爲您提供了一種處理數據字段的非常簡單的方法,就好像您擁有數據庫表一樣。但是,如果您需要在表之間關聯數據或對串行化數據執行求和,計數或其他數據庫計算,則這不起作用。我這些情況下,一個完全成熟的表和$ wpdb會更好地服務。

0

我在我的開發中都用到了。

  • get_option()是靜態或單信息更容易咬
  • $wpdb是用於存儲多維信息

較好的主要區別是,抓鬥和去信息(如許可證密鑰,到期日期和靜態信息)get_option()真的很方便。它修剪,快速,而且非常易於使用。但是,我開發了管理用戶數據和表單提交的插件,並且在這種情況下,像這樣的get_option()不提供我需要的多功能性,而無需編寫大量複合數組或試圖跟蹤多個選項。對於多維信息或插件的交叉引用相關數據條目,$wpdb要好得多 - 您可以構建自己的表格並按照自己的喜好進行排序/組織。

:)