2016-09-25 47 views
-2

我试图做一个程序,跟踪一些货物集装箱和它们是什么。Mysqli插入失败,当使用for循环

表格分为2部分。第一部分询问货物是否是卡车或集装箱以及预计到达日期。这个信息存储在一个数据库中,让我们称之为shippinginfo。将它添加到数据库后,它会得到一个unigue id(int auto inc)。我还检索用于将货物链接到运输信息的ID。

形式的第二部分是所述货物..像物品lotno-数量 代替写入20行我做一个for循环 的想法是从写的形式的第一部分中检索到的ID(航运info),然后在另一个数据库中的货物信息可以称它为cargoDB

在我的插入语句中,我使用for循环来循环槽插入以将它们添加到数据库,但这是所有的地方#¤% “

它增加了航运信息罚款,我检索到的ID罚款,它增加了货物的第一行货物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]。“
”; //调试“,这不是”调试“的方式。获取真正的错误(s)http://php.net/manual/en/mysqli.error.php --- http://php.net/manual/en/function.error-reporting.php –

+1

它只是看看for循环是否正常工作......它将所有货物行打印到屏幕上,但它只将第一个cargoline写入db。编辑:我在one.com网站主办,并有错误报告,但它没有说明任何错误。 – hybris

+0

桌子上是否有主键或唯一索引?你可以运行一个'desc RegisterFPCargo;'查询并显示结果 – tanerkuc

回答

0

正如在评论中提到的,问题是作为主键的列上的重复值。

为了将来的参考,执行方法失败时返回false,您可以通过检查错误消息进行调试。快速和肮脏的方式将是:

$mysqli->execute($stmt) or trigger_error($mysqli->error);