2010-01-06 42 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要好得多 - 您可以构建自己的表格并按照自己的喜好进行排序/组织。

:)