$ wpdb-> get_row不返回记录。查询是正确的

时间:2013-10-18 09:47:57

标签: php wordpress wpdb

我为同意或拒绝dotpay交易的WordPress编写函数,我有很大的问题。当我尝试使用wpdb-> get_row调用sql查询时,我无法得到任何结果(大小为0)。我尝试打印我的查询并在phpMyAdmin中调用 - 这有效。

查询和调用:

 $query = "SELECT wp_posts.id "
         ." FROM wp_posts "
         ."INNER JOIN wp_postmeta "
         .   "ON wp_posts.id =  wp_postmeta.post_id " 
         ."WHERE wp_postmeta.meta_value =%d AND wp_postmeta.meta_key='amount' AND post_title = %s;";
$post_id = $wpdb->get_row($wpdb->prepare($query, $amount, $description));

参数:

$amount = $_POST['amount'];
$description = mysql_real_escape_string(trim($_POST['description']));

我在没有准备的情况下尝试,它起作用了。

我找不到任何日志,因为这个脚本是由dotpay调用的。所以wp_config和debug on not work(我没说)

2 个答案:

答案 0 :(得分:0)

您的范围中是否将变量$wpdb设置为全局?

答案 1 :(得分:0)

您可以使用下面的reg exp删除特殊字符,但如果您分享查询中的某些特殊字符会更好,这样我就可以为您提供更好的主意。

$description = preg_replace("/[^A-Za-z0-9 ]/", '', $description);

如果你在帖子标题中有特殊字符而不是你需要转换$ description值来匹配那些标题,你可能需要使用php的htmlentites函数。