2016-09-25 18 views
-2

私は、いくつかの貨物コンテナとその中にあるものを追跡するプログラムを作ろうとしています。forループを使用するとMysqliの挿入が失敗する

フォームは2部に分かれています。最初の部分は、トラックやコンテナ、到着予定日のように出荷を尋ねます。この情報はDBに保存され、それをshippinginfoと呼ぶことができます。それをDBに追加すると、unigue id(int auto inc)が得られます。私はまた、貨物を出荷情報にリンクするために使用するIDを取得します。

フォームの2番目の部分はcargo .. like article-lotno-qty の代わりに20行書きます。forループを行います アイデアは、フォームの最初の部分から取得したIDを書き込むことですinfo)を呼び出し、別のDBの貨物情報をcargoDBと呼ぶことができます

ここで私の挿入文では、ループを使って挿入をループしてデータベースに追加しますが、これは#¤% "

送料情報を追加しています。私はIDをうまく取り込み、貨物の最初の行を貨物DBに追加しますが、私が何をしても他の貨物列は追加されませんDB。

ループの動作を見るためにスクリーンに印刷しようとしましたが、うまく印刷できませんでした。

DBに追加するためのコードは、私を助けてください

if($insert_stmt = $mysqli->prepare("INSERT INTO RegisterFPCargo (sID, artNo, lotNo, productionDate, bestbeforeDate, qty) VALUES (?, ?, ?, ?, ?, ?)")) { 
    for($i = 1; $i <= $NumberofRows ; $i++){ 
     if($_POST['artNo'.$i] <> "") { 
      $insert_stmt->bind_param('issssi', $tID, $_POST['artNo'.$i], $_POST['lotNo'.$i], $_POST['pDate'.$i], $_POST['bbDate'.$i], $_POST['qty'.$i]); 
      echo $_POST['artNo'.$i]."<br>"; //Debug 
      $insert_stmt->execute(); 
     } 
    } 
} 
echo $tID; 

です。

+0

'echo $ _POST ['artNo'。$ i]。"
"; // "デバッグ"の方法ではありません。実際のエラーを取得するhttp://php.net/manual/en/mysqli.error.php --- http://php.net/manual/en/function.error-reporting.php –

+1

forループがうまくいったかどうかを調べる...すべての貨物列を画面に表示するが、最初のcargolineをdbに書き込むだけだ。編集:私はone.com webhostingにはエラーが報告されていますが、それはエラーを示していません。 – hybris

+0

テーブルにプライマリキーまたはユニークインデックスがありますか? 'desc RegisterFPCargo;'クエリを実行して結果を表示できますか? – tanerkuc

答えて

0

コメントに記載されているように、主キーである列に重複した値がありました。

将来参照すると、executeメソッドは失敗するとfalseを返し、エラーメッセージを調べてデバッグできます。クイックで汚れた方法は、次のようになります。

$mysqli->execute($stmt) or trigger_error($mysqli->error); 
関連する問題