【发布时间】:2017-02-03 02:41:46
【问题描述】:
我正在尝试制作一个程序来跟踪一些货物集装箱及其中的物品。
表格分为两部分。第一部分询问货物是否是卡车或集装箱以及预计到达日期。此信息存储在数据库中,我们称之为 shippinginfo。将其添加到数据库后,它会获得一个唯一的 id(int auto inc)。我还检索了用于将货物链接到运输信息的 ID。
表格的第二部分是货物.. like article-lotno-qty 而不是写 20 行我做一个 for 循环 这个想法是写从表单的第一部分(运输信息)检索到的 ID,然后在另一个数据库中的货物信息我们称之为 cargoDB
在我的插入语句中,我使用 for 循环循环插入插入以将它们添加到数据库中,但这就是#¤%"。
它很好地添加了运输信息,我很好地检索了 id,它将货物的第一行添加到货物数据库中,但无论我做什么,它都不会将其他货物行添加到数据库中。
我尝试将其打印到屏幕上只是为了查看循环是否正常,并且打印效果很好。
添加到数据库的代码是
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;
请帮帮我。
【问题讨论】:
-
echo $_POST['artNo'.$i]."<br>"; //Debug这不是“调试”的方式。获取真正的错误php.net/manual/en/mysqli.error.php --- php.net/manual/en/function.error-reporting.php -
这只是为了看看 for 循环是否有效......它将所有货物行打印到屏幕上,但它只将第一个货物行写入数据库。编辑:我在 one.com 虚拟主机上并且有错误报告,但它没有说明任何错误。
-
表上是否有主键或唯一索引?你能运行
desc RegisterFPCargo;查询并显示结果吗 -
使用
echo $insert_stmt->sqlstate;调试mysqli_stmt,甚至转储整个对象,看看是否有帮助。也许每个准备好的查询只能绑定一次? -
知道你是如何设置的会很有用
$NumberofRows记住我们不是千里眼