我可以使用php SQL函数代替$wpdb吗?

时间:2012-06-21 作者:blee908

我是WordPress的新手,想知道为什么在WordPress API中他们会告诉您使用以下函数prepare(), insert(), get_col(), get_row(), query(), 等。从技术上讲,我可以使用内置的PHP-SQL函数,如mysqli_query(), mysqli_fetch_assoc(), 等

使用$wpdb 执行查询的SQL函数?

2 个回复
最合适的回答,由SO网友:EAMann 整理而成

有几个不同的原因。

1。Separation of Concerns

基本上,您的逻辑代码(即插件或主题)不需要了解数据库的任何信息。完全真正地

这个$wpdb 对象是全局数据库访问层,您应该将其用于所有数据库访问。如果需要运行自定义查询(假设您在某处有一个自定义表),那么应该使用$wpdb->prepare()$wpdb->query() 准备查询并从数据库中提取数据。

2。安全性很容易忘记清理查询并使您的站点受到某种SQL注入攻击。使用WordPress的内置卫生方法是防止这种情况的一种方法。这并不完美(您仍然可以编写一个非常糟糕的查询),但它确实有帮助。

3。性能WordPress API中内置的查询已经被几个开发人员倾注,并经过调整,以最小的内存占用运行并尽快返回。此外,其中一些API调用是自缓存的,因此您可以;“查询”;对于尚未更改且已在内存中的数据。与直接调用SQL相比,这是一个巨大的性能优势。

随着WordPress的每一个新版本,我们都会做出改变,使事情变得更快、更灵活。

4。灵活性和稳定性

数据库不是一个固定的结构。表架构可以and will更改。在您自己的代码中对WordPress对象进行硬编码查询是一个缺乏灵活性的维护噩梦。当新版本的WP删除时,您将不得不再次重写您的查询。。。再次暴露潜在漏洞(#2)或对站点性能造成负面影响(#3)。

底线是,您仍然可以使用所有PHP。您可以直接连接到所需的任何数据库,并运行所需的任何查询。但是WordPress已经(在大多数情况下)为您完成了繁重的工作并抽象了这些调用。

使用的好处$wpdb 它已经存在,由几个开发人员维护,并且有很好的文档记录。你不必重新发明轮子。你知道,如果WordPress改变了,它也会随之改变。

SO网友:getWeberForStackExchange

Yes you can use PHP\'s SQL functions in WordPress. WordPress是用PHP编写的,所以所有PHP函数都可以在插件中使用。

要回答您的第二个问题wpdb 既方便又安全。这个wpdb 库是一个数据库抽象层,它提供了大量有用的功能。例如,当使用wpdb->insert()和wpdb->update()函数时,您不需要编写任何SQL,也不必担心转义变量的内容(the wpdb documentation for wpdb->update() 说他们不应该逃避责任)。

Update: 应该注意的是,wpdb不会在以下函数中转义SQL查询select(). 阅读DB section of the Data Validation 文章了解更多信息。

为了详细说明fdsa的响应,wpdb还内置了用于查询优化的缓存。

wpdb 还为数据库表的名称提供了方便的变量。这在为网络/多站点环境编码时非常有用。

供参考:Class Reference/wpdb 在官方文件上。

结束

相关推荐

已迁移的WordPress站点出现“Unfined Variable:php”警告

我刚刚将wordpress网站从笔记本电脑迁移到桌面。我在尝试/localhost/wordpress/wp admin时遇到服务器错误500。所以我打开了WP\\U调试,现在我得到了一系列Notice: Undefined variable: skype_mu_dir in /var/www/wordpress/wp-content/plugins/skype-online-status/skype-status.php on line 42 Notice: Undefined variabl