可捕获的致命错误:WP_User 类的对象无法在第 139 行的 /directory/ 中转换为字符串

Posted

技术标签:

【中文标题】可捕获的致命错误:WP_User 类的对象无法在第 139 行的 /directory/ 中转换为字符串【英文标题】:Catchable fatal error: Object of class WP_User could not be converted to string in /directory/ on line 139 【发布时间】:2015-03-22 01:32:17 【问题描述】:

我目前正在尝试获取提交表单的用户名,并将其与提交的值一起存储在数据库中。

这是我函数的第 139 行:

$retval = $newdb->query("SELECT * FROM $table WHERE user = '$hf_username' ");

add_action("init", "ref_access");
function ref_access() 

global $error;

if ( is_user_logged_in() ) 


    global $quanid;
    global $newdb;
    $hf_username = wp_get_current_user();
    $inputValue  = isset($_POST['$quanid']);
    $newdb = new wpdb( 'user', 'password', 'db', 'localhost' );
    $retval = $newdb->query("SELECT * FROM $table WHERE user = '$hf_username' ");

if( mysqli_num_rows($retval) > 0) 

    $newdb->query("UPDATE table SET user = '$hf_username' "); //If user exists, update

else

global $table;
global $newdb;
    $newdb->insert( 
        $table, 
        array( 
            'ItemID' => $quanid,
            'Price'  => $inputValue,
            'user'   => $hf_username
        )
    );



 else 
     $error = "Error: You must be logged in to submit prices";
     return; 



【问题讨论】:

【参考方案1】:

wp_get_current_user 返回 WP_User 对象,而不是字符串形式的用户名。用户名存储在WP_User 对象的user_login 属性中。

$hf_user = wp_get_current_user();
$hf_username = $hf_user->user_login;

也就是说,您的代码有几处似乎有点不对劲:

您似乎将 WordPress 数据库函数与内置的 mysqli_ 函数混合在一起。 $newdb->query 已经返回选定的行数,无需调用 mysqli_num_rows,它不会按您预期的方式工作。 您正在声明一个新的 wpdb 实例,而不是通过 global $wpdb 使用现有的数据库对象。如果您访问的是安装 WordPress 的同一数据库,则无需这样做。

【讨论】:

以上是关于可捕获的致命错误:WP_User 类的对象无法在第 139 行的 /directory/ 中转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

可捕获致命错误的 FindAll() 结果:DateTime 类的对象无法转换为字符串

可捕获的致命错误:WP_Error 类的对象无法转换为字符串

SQL 错误可捕获的致命错误:stdClass 类的对象无法转换为字符串

WordPress:可捕获的致命错误:stdClass 类的对象无法转换为字符串

可捕获的致命错误:WC_Cart 类的对象无法转换为字符串

可捕获的致命错误:WP_Post 类的对象无法转换为字符串