使用for循环时,Mysqli插入失败

时间:2016-09-25 19:59:27

标签: php sql for-loop mysqli

我正在尝试制作一个程序来跟踪一些货物集装箱及其中的物品。

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

表格的第二部分是货物......就像物品一样 - lotno-qty 而不是写20行我做一个for循环 我们的想法是写下从表格的第一部分检索到的ID(运输信息),然后另一个DB中的货物信息称为cargoDB

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

它增加了运输信息,我检索了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;

请帮帮我。

1 个答案:

答案 0 :(得分:0)

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

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

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