【发布时间】:2014-11-14 06:55:52
【问题描述】:
我已尽我所能,但此查询不起作用。我已经尝试过准备,将 ' 添加到两个变量中,将 ' 添加到 SET 变量中,使用 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";
但只要从 $_POST 变量中读取值,查询就不起作用。
我使用的是 PHP 5.3.28 和 MySQL 5.5.40。
请帮忙!
【问题讨论】:
-
回显您的查询并将其发布并与静态值匹配查询您错过的内容
-
检查您的浏览器控制台以确保数据确实正在发布。你也可以试试
isset($_POST["trans"]) ? strval($_POST["trans"]) : "value missing" -
$_POST 肯定包含正确的值,因为我稍后使用 $trans 和 $status 在页面中显示内容并且效果很好,我唯一的问题是这个表更新。
-
来自转储的查询是
UPDATE donations SET donation_status='Transaction Successful' WHERE donation_reference='12345678',我觉得很好,只是没有运行