Php $wpdb->;获取行而不是返回记录。查询是正确的

Php $wpdb->;获取行而不是返回记录。查询是正确的,php,wordpress,Php,Wordpress,我为WordPress编写了同意或拒绝dotpay交易的函数,我有一个大问题。当我尝试使用wpdb->get_row调用sql查询时,我无法得到任何结果(大小为0)。我试着打印我的查询并调用phpMyAdmin-这很有效 查询和调用: $query = "SELECT wp_posts.id " ." FROM wp_posts " ."INNER JOIN wp_postmeta " . "ON wp_posts.id = wp_p

我为WordPress编写了同意或拒绝dotpay交易的函数,我有一个大问题。当我尝试使用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 and debug on not work(我支持)

您的作用域中是否将变量
$wpdb
设置为全局变量?

您可以使用下面的reg exp删除特殊字符,但如果您共享查询的一些特殊字符则更好,这样我可以给您更好的想法

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

如果文章标题中有特殊字符,则需要转换$description值以匹配这些标题,并且可能需要使用php的HTMLEntes函数。

并执行简单的
$wpdb->query($query)
return
0
行吗?我认为您应该首先运行查询,而不使用prepare。如果没有返回任何内容,可能它不“存在”,我的意思是,可能参数确实不匹配。我会检查,但简单查询size
$wpdb->get\u行(“SELECT*FROM wp\u posts”
返回正确答案。此外,使用
$wpdb->posts
$wpdb->postETA
来参考表格。我们可以将前缀更改为任何内容,但任何内容都不能保证它是
wp
(事实上,建议我们使用默认值以外的内容)。您的查询和语句是100%正确的,您应该检查您的$description。它可能有特殊字符。