[英]Can't get variables to work in WPDB UPDATE query
我已经尽力了,但是此查询将不起作用。 我试过prepare,使用springf,使用格式化的字符串(将两个值都插入%s中)将'添加到两个变量,仅将'添加到SET变量,没有任何效果。 我整整整夜都在此度过,现在我只是想哭。
当我对值进行硬编码或将转储直接粘贴到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";
但是,只要从$ _POST变量中读取值,查询就不会起作用。
我正在使用PHP版本5.3.28和MySQL 5.5.40。
请帮忙!
首先,确保$ _POST包含您期望的内容。
然后,为了提高安全性,请使用wpdb::update()
方法代替wpdb::query()
$trans = strval($_POST["trans"]);
$status = strval($_POST["status"]);
global $wpdb;
$wpdb->show_errors;
$wdpb->update(
'donations',
array( 'dontion_status' => $status ),
array( 'donation_reference' => $trans ),
);
$wpdb->print_error;
exit( var_dump( $wpdb->last_query ) );
我想我也有同样的问题。 为查询的UPDATE和WHERE部分设置变量可以解决该问题。 因此,对于您的代码,使用建议的$ 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 ) );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.