mysql_fetch_数组有时会失败

mysql_fetch_数组有时会失败,mysql,arrays,variables,fetch,Mysql,Arrays,Variables,Fetch,我正在尝试实现与在线支付框架的连接 其中一个文件给我带来了一些麻烦,因为有时代码可以工作,有时不能。。。我不明白为什么 这里是代码失败的地方 $sql = "select transidmerchant,totalamount from nsiapay where transidmerchant='".$order_number."'and trxstatus='Verified'"; $result = mysql_query($sql); **$checkout = mysql_fe

我正在尝试实现与在线支付框架的连接

其中一个文件给我带来了一些麻烦,因为有时代码可以工作,有时不能。。。我不明白为什么

这里是代码失败的地方

$sql = "select transidmerchant,totalamount from nsiapay where     transidmerchant='".$order_number."'and trxstatus='Verified'";
$result = mysql_query($sql);
**$checkout = mysql_fetch_array($result);**
echo "sql : ".$sql;
$hasil=$checkout['transidmerchant'];
echo "hasil: ".$hasil;
$amount=$checkout['totalamount'];
echo "amount: ".$amount;
    // Custom Field
if (!$hasil) {
  echo 'Stop1';
} else {
    if ($status=="Success") {}
}
这只是代码的一部分,但我认为这足以让你看到问题。。。它在粗体行失败,
$checkout=mysql\u fetch\u array($result)
奇怪的是,“echo sql”可以工作,并且它显示了正确的值,但是当我把它们放在数组中时,有时变量被传递,有时它们不被传递。。。因此,当到达
if(!$hasil)
时,它会失败,因为该值为空。。。但有时它是有效的

对可能发生的事情有什么想法吗


Luis

此失败的唯一方式是当查询不返回任何内容时

正确的方法是检查是否有返回的内容:

$sql = "select transidmerchant,totalamount from nsiapay where     transidmerchant='".$order_number."'and trxstatus='Verified'";
$result = mysql_query($sql);
if($checkout = mysql_fetch_array($result)){
    $hasil = $checkout['transidmerchant'];
    echo "hasil: ".$hasil;
    $amount=$checkout['totalamount'];
    echo "amount: ".$amount;
        // Custom Field
    if (!$hasil) {
      echo 'Stop1';
    } else {
        if ($status=="Success") {}
    }
}else{
    echo "Empty query result";
}

与其执行
if(!$hasil)
,不如尝试执行
if($hasil==false)
。它应该检查返回值是否为false,而不是值是否等于false(false在PHP中可能意味着0、null或“”),您是否尝试使用Echo“”;打印(结帐);回声“*fin1te,我试过了,成功了!非常感谢:)一个简单而干净的解决方案:d,LuisThanks谢谢你的帮助briedis,但是现在我将使用Fin1T解决方案,但是,你仍然应该检查查询是否返回了一些内容,因为如果没有返回,你将有一个通知错误,这些内容不应该被忽略。