UPDATE table mySQL problem


UPDATE table mySQL problem

我有一个支付提供商,它可以帮助我通过电话支付。然而,付款后,我需要更新订单的状态。这行不通。完整的脚本如下:

        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中的引号。在开头和结尾总是使用双引号,在查询中间使用单引号。

在查询中避免连接,而是尝试像上面提到的那样包含它