首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Array_pop + WordPress 3.7.1 "get_results“=错误?

Array_pop + WordPress 3.7.1 "get_results“=错误?
EN

Stack Overflow用户
提问于 2013-11-12 17:30:50
回答 1查看 125关注 0票数 1

这很奇怪。我刚刚升级到WordPress 3.7.1,我突然开始收到错误

代码语言:javascript
复制
PHP Warning:  array_pop() expects parameter 1 to be array, null given in (...)

以下是相关代码:

代码语言:javascript
复制
$User = array_pop($RM->DB->get_results($RM->DB->prepare(
    'SELECT 
        `user_id` AS `ID`,
        `api_key` AS `key`
    FROM
        `rm_users` 
    WHERE
        user_id = %d'
    , $user_value)));

这里我使用WordPress的$wpdb对象来查询自定义表。奇怪的是如果我把它改成这个:

代码语言:javascript
复制
$Users = $RM->DB->get_results($RM->DB->prepare(
    'SELECT 
        `user_id` AS `ID`,
        `api_key` AS `key`
    FROM
        `rm_users` 
    WHERE
        user_id = %d'
    , $user_value));
$User = array_pop($Users);

它工作得很好。如果array_pop接收到null参数,那么$Users将为null,并将导致相同的错误,但它不是null,也不会导致错误。我在任何地方使用WordPress的"get_results“方法和"array_pop”都是一样的。

这是一个合法的php错误,还是有一些我不知道的深层次机制会阻止array_pop直接获取一个方法的输出?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-12 18:03:25

据我所知,它似乎并不是WP虫,我也不知道为什么它从3.7.1开始就开始了。

我已经使用您提供的两个方法( 3.7.1 )在自定义表上运行了以下操作,并且它们都按照预期返回了一个stdClass对象。

代码语言:javascript
复制
// Get one out with pop
print_r(array_pop($this->_wpdb->get_results($this->_wpdb->prepare(
    'SELECT
        CONCAT(user.firstname," ",user.surname) AS name,
        user.email,
        user.mobile,
        user.userType
    FROM user
    WHERE userId=%d
    LIMIT 1;',
    $userId))));

// get one out with 2-step
$users = $this->_wpdb->get_results($this->_wpdb->prepare(
    'SELECT
        CONCAT(user.firstname," ",user.surname) AS name,
        user.email,
        user.mobile,
        user.userType
    FROM user
    WHERE userId=%d
    LIMIT 1;',
    $userId));
print_r(array_pop($users));

与其使用pop,不如使用行法

代码语言:javascript
复制
$User = $RM->DB->get_row($RM->DB->prepare(
    'SELECT 
        `user_id` AS `ID`,
        `api_key` AS `key`
    FROM
        `rm_users` 
    WHERE
        user_id = %s'
    , $user_value));

或者,如果您希望将结果作为关联数组而不是stdClass:

代码语言:javascript
复制
$User = $RM->DB->get_row($RM->DB->prepare(
    'SELECT 
        `user_id` AS `ID`,
        `api_key` AS `key`
    FROM
        `rm_users` 
    WHERE
        user_id = %s'
    , $user_value), ARRAY_A);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19935956

复制
相关文章

相似问题

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