当我将数据输入循环并且没有输入数据库时​​,有没有可能?

时间:2016-05-28 09:07:30

标签: php loops

抱歉我的英语不好。我遇到循环问题。我的朋友说,当他使用我的程序并且他一次将20个数据或更多数据插入数据库时​​,有时数据与先前输入的数据不匹配。

一个例子:他插入了20个数据而他只得到了19个,但问题是有时会发生这种情况。

所以我现在很困惑,程序错误怎么会有时呢? 在这里我的代码:

   else if ($mod == 'suratkeluar'){
    $batas = $_GET['batas'];
        if (isset($_POST['submit'])) {


     for ($i = 0; $i < $batas; $i++) {

        $idlot = $_POST['hiddenlot'][$i];
        $idbenang = $_POST['hiddenbenang'][$i];
        $benang = $_POST['jenisbenang'][$i];
        $warna = $_POST['warna'][$i];
        $lot = $_POST['lot'][$i];
        $harga = $_POST['hiddenprice'][$i];
        $netto = $_POST['netto'][$i];
        $box = $_POST['box'][$i];
        $cones = $_POST['cones'][$i];
        $ket = $_POST['keterangan'][$i];
        $cussplit = explode('_',$_POST['customer']);
        $idcus = $cussplit[0];
        $cus = $cussplit[1];
        $alamatcus = $cussplit[2];
        $kota = $cussplit[3];
        $POsplit = explode('_',$_POST['nopo']);
        $idpo=$POsplit[0];
        $nopo=$POsplit[1];
        $mobilsplit = explode('_',$_POST['kendaraan']);
        $kendaraan = $mobilsplit[0];
        $plat = $mobilsplit[1];
        $identitas = $_POST['identitas'][$i];
        $month = date('n');
        $years=date('Y');

    if($idlot != 0){
       $a=mysql_query("INSERT INTO surat_jalan VALUES ('',now(),'$_POST[nosurat]','$idlot','$benang','$warna','$lot','$harga','$netto','$box','$cones','$idcus','$cus','$alamatcus','$kota','$idpo','$nopo','$ket',1,'$month$years','$identitas','$kendaraan','$plat','$idbenang')");
           $aax=mysql_query("SELECT * FROM lot WHERE id_lot='$idlot'");
           $xx=mysql_fetch_array($aax);
            $net=$xx['netto'] - $netto; 
            $bbox=$xx['box'] - $box; 
            $ccones=$xx['cones'] - $cones;
            if($net == 0)
            {
            $a= mysql_query("UPDATE lot SET netto = '$net',
                                    box = '$bbox',
                                    cones = '$ccones',
                                    warning = 1
                                 WHERE id_lot = '$idlot'");
            } 
        else
        {
        $a=mysql_query("UPDATE lot SET netto = '$net',
                                        box = '$bbox',
                                        cones = '$ccones'
                                     WHERE id_lot = '$idlot'");
        }
        }
    $b = $i + 1;

        for ($c = 0; $c < $box; $c++) {
        $packinglist = $_POST["packinglist$b"][$c];
        $a= mysql_query("INSERT INTO packing_list VALUES('','$packinglist','$surat[id_surat]','$surat[no_surat_jalan]')");

        } 
}

}
}

1 个答案:

答案 0 :(得分:1)

这个怎么样?我举一个例子,但这可能会(可能)所有查询。让我们说一下(从最后一个开始):

$a = mysql_query("UPDATE lot SET netto = '$net', box = '$bbox', cones = '$ccones' WHERE id_lot = '$idlot'");

要检查是否成功,您可以添加其他行:

if ($a) // Success?
    print("Row has been updated.<br>");
else    // Error
    print("An error has occured; row has not been updated. Reason: ".mysql_error()."<br>");

如果最后没有重定向等,并且至少有一个错误(最后一个?),那么你的朋友会看到如下内容:

  

发生了错误;行尚未更新。原因:#1054 - 未知列&#39;视锥细胞&#39;在&#39; where子句&#39;

     

发生了错误;行尚未更新。原因:#1054 - 未知列&#39;框&#39;在&#39;字段列表&#39;

有了这个帮助,您可以查看查询或应用程序本身是否有错误(超时?)。

还有另一个问题:您正在使用PHP的mysql_API,这是不推荐使用的。相反,您应升级并使用mysqli_API