2016-05-28 10 views
3

私の悪い英語のために申し訳ありません。私はループに問題があります。私の友人は私のプログラムを使い、一度に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]')"); 

     } 
} 

} 
} 
+0

詳細をお知らせください。 –

+0

私はもっと詳しく考えています。私の最初の考えは、データが入力されているためにループが破られているか、タイムアウトの可能性があるという問題があるということです。私は失敗したインスタンスの具体的な例を得るでしょう。つまり、あなたの友人が挿入しようとしている20の項目を取得し、あなたのコードでSQLを印刷して、データベース内の各クエリを直接テストするようにしてください。それはあなたに私のプログラムについての私の友人からの報告を得るので、あなたに多くの情報を与えるべきです – dg4220

+0

。彼は私のプログラムはussualyとしてdidnt仕事を言ったので、私は私のコピーされたプログラムをチェックし、正しく動作します。彼は私のプログラムが時々動作せず、データベースに入っていないと教えてくれるが、20のデータから1または2のデータだけがデータベースに入っていない。私はもっ​​と混乱させることが時々起こっている。だから何をすべきか? –

答えて

2

どうやってですか?私は例を挙げるが、これは(おそらく)すべてのクエリと一緒に行くことができる。 (第2の最後から)この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>"); 

をそして少なくとも1個のエラーがあり、その後、あなたの友人がこのようなものが表示されます(最後の?):

はエラーが発生しましたが、行が更新されていません。理由:#1054 - 'where句'の 'cones'列が不明です

エラーが発生しました。行が更新されていません。理由:#1054 - 'フィールドリスト'の未知の列 'ボックス'

このヘルプを使用すると、クエリまたはアプリケーション自体にエラーがあるかどうかを確認できます(タイムアウト?)。

もう1つの問題があります:PHPのmysql_APIを使用していますが、これは廃止予定です。代わりに、mysqli_APIをアップグレードして使用する必要があります。

+1

もし20行のデータを入力すれば、20回の通知が出ますか?その素晴らしいアイディアです。ありがとう。 mysqli_APIは私の現在のものと同じですか?私はこの笑で新しいです –

+0

はい、彼らはそうです。しかし、少なくとも彼らは間違いなくどこに問題があるかを見極めるでしょう。 mysqliの動作を確認するには、ここをクリックしてください:http://www.w3schools.com/php/php_mysql_select.asp大幅な変更はありませんが、少し異なります。それが助けられた場合は、同様の問題を抱えている将来の訪問者を助けるために受け入れられたとマークしてください(また、あなたは+2の担当者も得ます)。 :) –

+1

ありがとうございました。 –

関連する問題