我有一个支付服务提供商,这可以帮助我通过电话付款。但是在付款后我需要更新订单的状态。这不起作用。整个脚本见下文。
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']与网址一起发送。
我真的不知道答案,因为当我在开始时(付款之前)使用它时,UPDATE行确实有效。
不仅更新行不起作用,“如果付款”之后的所有内容都不起作用。
先谢谢!
答案 0 :(得分:1)
检查查询:
$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
}
答案 1 :(得分:0)
请在代码中添加$m->payed
来验证var_dump()
的值。
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!';
}
答案 2 :(得分:0)
您必须了解如何调试您的代码。
仅通过观看代码就无法说出问题所在 必须运行代码,获取所有可能的错误消息并检查所有重要变量。这是找到问题的唯一方法。
因此,要获得可能的错误消息,您必须使用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');
}
答案 3 :(得分:0)
问题最终是我的服务器,我'关闭了'显示错误'。当我打开它时,实际错误与session_start有关。当我在服务器上打开文件时,我看到我以错误的格式保存了文件,这解决了!
感谢您的每一个答案。
答案 4 :(得分:0)
尝试更改此
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'"
小心查询中的引号。始终在开始和结束时给双引号,在查询中更喜欢单引号。
避免在查询中进行连接,而是像上面提到的那样尝试包含它