Wordpress数据库$ wpdb与get_option()

时间:2010-01-06 23:27:10

标签: php wordpress-plugin wordpress

所以我一直在开发使用get_option函数创建交互和删除数据库的插件。

我现在看到一些教程展示了如何使用全局$ wpdb方式从数据库中获取值。

两者之间有什么区别,并且比另一个更好?

5 个答案:

答案 0 :(得分:3)

对于存储与帖子相关的插件选项或轻量级数据,get_option(),get_post_meta()及其相关功能是理想的选择。对于关系数据库活动,$ wpdb是最佳选择。原因如下:

$ wpdb是一个基于ezSQL PHP类的类,用于与数据库交互。一些功能包括:

1)使用$ wpdb-> prepare(),$ wpdb-> insert()和$ wpdb-> update()方法提供SQL注入保护。 get_option()是一个帮助函数,允许你做一个Key =>价值对。

2)$ wpdb易于使用。它可以以各种形式返回记录集:$ wpdb-> get_results($ sql,ARRAY_A)一个数组或关联数组,包含返回的行,列名为键。 $ wpdb-> get_results($ sql)将返回一个对象数组,其列名作为对象的属性。 $ wpdb-> get_var($ sql)将返回标量结果(查询中数据集第一行的第一列)。 $ wpdb-> get_row($ sql)将返回单行作为对象。

3)$ wpdb允许您与数据库中的任何表进行交互,甚至使用$ wpdb-> query($ sql)执行自由格式查询

4)WordPress可能会确保你与$ wpdb的交互如果添加对MySQL之外的数据库的支持则不需要改变。最初的ezSQL类旨在提供一些跨数据库支持。

因此,如果您需要以关系方式处理数据,$ wpdb确实是WordPress的绝佳选择。

get_option()和get_post_meta()提供了一种处理少量数据的简便方法,在get_post_meta()的情况下与特定帖子相关或作为Key =>与get_option()的值对。

关于这些的一个好处是你可以保存一个序列化的数组或对象,并将数据作为数组或对象返回。这为您提供了一种非常简单的方法来处理数据字段,就像您拥有数据库表一样。但是,如果需要在表之间关联数据或对序列化数据进行求和,计数或其他数据库计算,则这不能很好地工作。在那些情况下,一个完全成熟的表和$ wpdb会更好地服务。

答案 1 :(得分:2)

使用WordPress帮助程序功能(不限于get_option())将确保您的插件在较新版本的WordPress进行可能影响您的代码的更改时具有前瞻性。

在考虑编写自己的编码之前,建议您理解并使用他们的助手。

答案 2 :(得分:0)

全局$ wpdb变量比get_option()函数更强大,因为它允许您从wordpress中的任何表操作和检索数据,包括所有插件表。这为您提供的功能比仅仅获取对选项表的访问权限更多。

当您从选项表中专门检索用于插件选项的选项时,应使用get_option()。此功能的其他变体包括add_optionupdate_optiondelete_option。所有相关函数都应专门用于插件选项。

答案 3 :(得分:0)

我之前用过这两个。如果您可以使用辅助函数,则应该这样做。如果您需要做一些非常自定义的事情,您可以使用全局。我只使用全局,如果我必须编写自己的查询

答案 4 :(得分:0)

我在开发中使用了两者。

  • get_option()对于静态或单个信息咬合要容易得多
  • $wpdb更适合存储多维信息

主要区别在于,对于随身携带的信息(如许可证密钥,到期日期和静态信息)get_option()非常方便。它修剪,快速,非常容易使用。

但是,我开发了管理用户数据和表单提交的插件,在这种情况下get_option()并没有提供我需要的多功能性,而无需编写大量复合数组或尝试跟踪多个选项。对于多维信息,或者为插件的交叉引用相关数据条目,$wpdb要好得多 - 您可以构建自己的表并对您喜欢的方式进行排序/组织。

:)