WP_Error message

时间:2012-09-24 作者:Greg Wiley

PHP Notice: Object of class WP_Error could not be converted to int in /var/www/vhosts/hayhauler.co/httpdocs/wp-includes/functions.php on line 2568, referer: http://hayhauler.co/

我甚至不知道从哪里开始,也不知道该问什么问题。我知道这会阻止我使用以下方法将某些信息发布到数据库中:

$wpdb->query($wpdb->prepare(
  "
    INSERT INTO $wpdb->quotes
    (user_ID,origin,destination,broker_ID,quote_ID,estimatedship)
    VALUES (%d,%s,%s,%d,%s,%s)
  ",
  $user_id,
  $origin,
  $destination,
  $brokerID,
  $brokerID.\'-\'.genRandomString(),
  $estimatedship
));
然后出现以下错误:

mysql_real_escape_string() expects parameter 1 to be string, object given in /var/www/vhosts/hayhauler.co/httpdocs/wp-includes/wp-db.php on line 789, referer: http://hayhauler.co/

任何帮助或指导都将不胜感激。

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

您试图传递到的变量之一wpdb::prepare 是一个WP_Error 对象WP_Error\'s就像是混合了返回码的异常:WordPress API中的一些函数返回WP\\u Error对象来告诉您出了什么问题(例如get_terms).

我们需要查看更多的代码才能更具体,但您可以使用函数进行测试is_wp_error. 那么,假设$brokerID是问题的根源:

<?php
$brokerID = some_function_that_gets_broker_id();

if(is_wp_error($brokerID))
{
    // do stuff to fix it
}
else
{
    // Your original code goes here.
}

结束

相关推荐

Displaying oEmbed errors?

有时,通过oEmbed嵌入项目是不可能的,例如,当YouTube视频已禁用嵌入时。The oEmbed service will return a 401 Unauthorized, 并且不会转换代码。有没有办法通知用户这一点?当前的工作流是非直观的(至少对我来说),我更喜欢在WordPress页面上,或者更好的是,在编辑器中显示一条消息,说明对象无法嵌入。