Php Can';无法在WPDB更新查询中使用变量

Php Can';无法在WPDB更新查询中使用变量,php,mysql,sql,wordpress,Php,Mysql,Sql,Wordpress,我已经尽力了,但这个查询不起作用。我尝试过准备,将“添加”到两个变量中,仅将“添加”到集合变量中,使用springf,使用格式化字符串,其中两个值都插入到%s中,没有任何效果。我整晚都在这上面,现在我只想哭 当我将值硬编码或直接将转储粘贴到phpmyadmin中时,此查询工作 $trans = strval($_POST["trans"]); $status = strval($_POST["status"]); global $wpdb; $wpdb->show_errors; $qu

我已经尽力了,但这个查询不起作用。我尝试过准备,将“添加”到两个变量中,仅将“添加”到集合变量中,使用springf,使用格式化字符串,其中两个值都插入到%s中,没有任何效果。我整晚都在这上面,现在我只想哭

当我将值硬编码或直接将转储粘贴到phpmyadmin中时,此查询工作

$trans = strval($_POST["trans"]);
$status = strval($_POST["status"]);

global $wpdb;
$wpdb->show_errors;
$query = "UPDATE donations SET donation_status='".mysql_real_escape_string($status)."' WHERE donation_reference = '".mysql_real_escape_string($trans)."'";

$result = $wpdb->query($query);

$wpdb->print_error;

exit( var_dump( $wpdb->last_query ) );
另一件有趣的事情是,当我用硬编码的值替换前两行时,查询工作正常,如:

$trans = "12345678";
$status = "Transaction Successful";
但只要从$\u POST变量读取值,查询就不起作用

我使用的是PHP版本5.3.28和MySQL 5.5.40


请帮忙

首先,确保$\u POST包含您期望的内容

然后,为了增加安全性,请使用方法而不是
wpdb::query()


我想我也有同样的问题。设置更新的变量以及查询的各个部分在何处解决了该问题。因此,对于您的代码,使用建议的$wdpb->update方法,它将是:

$status = strval($_POST["status"]);
$trans = strval($_POST["trans"]);

$table_name = 'donations';
$data_update = array( 'dontion_status' => '$status' );
$data_where = array('id' => '$id');

global $wpdb;
$wpdb->update($table_name, $data_update, $data_where, array('%s'), array('%d'));

exit( var_dump( $wpdb->last_query ) );

回显您的查询并将其发布,并与静态值匹配查询您的错误检查浏览器控制台以确保数据确实已发布。您也可以尝试
isset($\u POST[“trans”])?strval($\u POST[“trans”]):“value missing”
$\u POST肯定包含正确的值,因为我使用$trans和$status稍后在页面中显示内容,效果很好,我唯一的问题是这个表更新。dump中的查询是
update investments SET generation\u status='Transaction Successful',其中generation\u reference='12345678'
,在我看来很好,只是没有运行。您没有抓住要点,OP已经提到,当他使用硬编码值时,查询可以工作。所以这不是
wpdb->update
vs
wpdp->query
的问题。问题似乎是
$\u POST
不包含它应该包含的数据。是的,我已经尝试了
$wpdb->update
,但它也不工作,并且没有错误produced@Keezy然后检查$\u POST,
die(''.var\u export($\u POST,1))@NabilKadimi$\u的帖子运行良好<代码>数组('trans'=>'12345678','status'=>'Transaction Successful','amt'=>'1000.00',)
$status = strval($_POST["status"]);
$trans = strval($_POST["trans"]);

$table_name = 'donations';
$data_update = array( 'dontion_status' => '$status' );
$data_where = array('id' => '$id');

global $wpdb;
$wpdb->update($table_name, $data_update, $data_where, array('%s'), array('%d'));

exit( var_dump( $wpdb->last_query ) );