UPDATE表mySQL问题

时间:2011-09-09 13:17:00

标签: php mysql

我有一个支付服务提供商,这可以帮助我通过电话付款。但是在付款后我需要更新订单的状态。这不起作用。整个脚本见下文。

        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行确实有效。

不仅更新行不起作用,“如果付款”之后的所有内容都不起作用。

先谢谢!

5 个答案:

答案 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'"

小心查询中的引号。始终在开始和结束时给双引号,在查询中更喜欢单引号。

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