我有一个支付提供商,它可以帮助我通过电话支付。然而,付款后,我需要更新订单的状态。这行不通。完整的脚本如下:
if ($m->payed) {
$order_result = mysql_query('UPDATE jos_vm_orders SET order_status="C" WHERE order_id="'.$_GET['id'].'"');
echo '<b>Bedankt voor je betaling</b><br />
De betaling is succesvol gelukt!';
}
else {
$GET_['id']与url一起发送。
我真的不知道答案,因为当我在开始(付款之前)使用UPDATE行时,它确实工作。
不仅update行不起作用,if paid之后的所有内容也不起作用
提前感谢!
检查查询:
$order_result = mysql_query('UPDATE jos_vm_orders SET order_status="C"
WHERE order_id="'.$_GET['id'].'"');
我猜WHERE子句失败了。术后Call mysql_affected_rows()
;如果没有行被更新,它将返回0。
问题也可能是查询失败。将查询封装在一个类似于下面的块中:
if (!$order_result = mysql_query('UPDATE jos_vm_orders SET order_status="C"
WHERE order_id="'.$_GET['id'].'"')) {
// Handle the error here.
}
还请注意,在SQL查询中直接使用$_GET或$_POST数据并不是一个好做法。考虑验证它,至少可以这样做:
$_GET['id'] = (int) $_GET['id'];
if ($_GET['id'] === 0) {
// handle the error here
}
请通过在代码中添加var_dump()
来验证$m->payed
的值
var_dump($m);
if ($m->payed)
{
$sql="UPDATE jos_vm_orders SET order_status='C' WHERE order_id=$_GET[id]";
$order_result = mysql_query($sql);
echo '<b>Bedankt voor je betaling</b><br />
De betaling is succesvol gelukt!';
}
你必须学习如何调试你的代码。
仅仅通过观察代码是不可能知道问题出在哪里的。
必须运行代码,获取所有可能的错误消息并检查所有重要变量。这是找到问题的唯一方法。
因此,要获得可能的错误消息,您必须以与前一个相同的方式运行查询,通过使用mysql_error()
您还必须处理要查询的值。
所以,让你的代码像这样:if ($m->payed) {
$id = intval($_GET['id']);
$sql = "UPDATE jos_vm_orders SET order_status='C' WHERE order_id=$id";
$res = mysql_query($sql);
if (!$res) {
trigger_error(mysql_error()." ".$sql);
echo '<br>Server Error<br>';
} elseif (!mysql_affected_rows($res)) {
trigger_error("No rows were updated! ".$sql);
echo '<br>Server Error<br>';
} else {
echo '<b>Bedankt voor je betaling</b><br />De betaling is succesvol gelukt!';
}
} else {
echo '<font color=red><b>Betaling is niet afgerond,<br />volg de onderstaande instructies!</b></font><br /><br />';
}
include('includes/include.paymentscreen.php');
}
问题最终是我的服务器,我有'显示错误'关闭。当我打开它时,实际的错误与session_start有关。当我在服务器上打开文件时,我发现我以错误的格式保存了它,这解决了它!
谢谢大家的回答
Try Change This
UPDATE jos_vm_orders SET order_status="C" WHERE order_id="'.$_GET['id'].'"
$id=$_GET['id'];
"UPDATE jos_vm_orders SET order_status='C' WHERE order_id='$id'"
注意query中的引号。在开头和结尾总是使用双引号,在查询中间使用单引号。
在查询中避免连接,而是尝试像上面提到的那样包含它