首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wordpress - WPDB查询

Wordpress - WPDB查询
EN

Stack Overflow用户
提问于 2013-04-08 08:28:16
回答 2查看 581关注 0票数 2

在wordpress中,我在默认表中查询我手动添加的自定义行和列。我正在全球化的$wpdb (Wordpress数据库函数),它工作于一半的代码。

例如,脚本的第一部分是这样的(只显示代码的相关部分):

代码语言:javascript
复制
    class Test {

    public function getP($param){

    global $wpdb;
    $q = $wpdb->get_results("SELECT * FROM tbl WHERE " . $param['1']." = '" . $param['2'] . "'");
    }
    }

这样,当通过$wpdb运行时,查询就可以工作了,而且我能够打印返回结果。

然而,再往下,我需要根据结果运行另一个查询,因此我需要使用$wpdb->query而不是$wpdb->get_results

示例(同样,仅限相关人员):

代码语言:javascript
复制
    global $wpdb;

    $stmt = $this->wpdb->query($q);

    if($param['type'] == 'x'){

    $data = $stmt->fetchAll();

    }else{

$data = $stmt->fetch();

    }

return $data;

这不起作用,因为它似乎落在对象之外,并提供以下错误:

代码语言:javascript
复制
    Fatal error: Call to a member function query() on a non-object

即使数据库连接工作并且位于对象内部,您是否了解为什么第一个查询可以工作,但是第二个查询会导致错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-08 15:03:58

从文档中:

此函数返回与受影响/选定的行数相对应的整数。如果出现MySQL错误,函数将返回FALSE。

来自here

$wpdb->query()方法不返回结果,它返回受影响的行数。例如,如果您希望结果使用$wpdb->get_results(),但可能其他方法之一更适合您的需求。

这就是获取FatalError的原因,因为Integer不是一个对象。

看一看$wpdb参考中的here,每种方法都有很好的解释。

祝好运!

票数 3
EN

Stack Overflow用户

发布于 2013-04-08 15:45:02

在您的示例中,您尝试对stdClass array()或结果运行$wpdb->query,而不是针对SQL查询。

$wpdb->get_results将返回一个对象/行数组,而不是您希望的另一个可查询的SQL语句。最终,您可以编写一个控制循环来生成新的SQL语句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15869513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档