php - 将成功插入的记录捕获到数组中
问题描述
我正在使用 PDO 将记录从一个表插入到另一个表中。
我正在尝试捕获成功插入到另一个表中的记录,同时还捕获可能无法插入的记录。
<?php
$checkcontainer = $_POST['checkcontainer'];
$checkscac = $_POST['checkscac'];
$comment = $_POST['comment'];
$time = date('Y-m-d H:i:s');
$containerSuccess = array();
$containerFail = array();
$count = count($checkcontainer);
for($i = 0; $i < $count; $i++)
{
$container = $checkcontainer[$i];
$scac = $checkscac[$i];
$insert = $dbc->prepare("INSERT IGNORE INTO trucker_edi_comms (container, scac, fac_comments, fac_datestamp) VALUES (:ucont,:uscac,:ucomm,:utime);");
$insert->execute([
'ucont' => $container,
'uscac' => $scac,
'ucomm' => $comment,
'utime' => $time
]);
if($insert)
{
$containerSuccess = $container;
//echo "containers saved: " . $containerSuccess;
}
else
{
$containerFail = $container;
//echo "containers failed: " . $containerFail;
}
}
echo "containers saved: " . $containerSuccess;
?>
INSERT 语句有效。我还可以将 $containerSuccess 数组设置为 $container。如果成功插入 3 个容器,则 FOR 循环内部的输出如下所示:
containers saved: TEST123456789containers saved: TEST98642357containers saved: TEST65897531
但我需要能够在 FOR 循环之外回显 $containerSuccess。目前,输出如下所示:
containers saved: TEST65897531
我只能抓住最后一个保存的容器。
我需要回显 FOR 循环之外的所有容器以显示给用户。
我怎样才能做到这一点?
解决方案
您的示例试图用字符串填充声明的数组,因此您在关于变量类型的正确轨道上。您可以在循环完成后填充一个数组以输出保存/失败的容器,如果您希望它在一行上输出,请使用implode()输出:
<?php
$checkcontainer = $_POST['checkcontainer'];
$checkscac = $_POST['checkscac'];
$comment = $_POST['comment'];
$time = date('Y-m-d H:i:s');
$containerSuccess = array();
$containerFail = array();
$count = count($checkcontainer);
for($i = 0; $i < $count; $i++)
{
$container = $checkcontainer[$i];
$scac = $checkscac[$i];
$insert = $dbc->prepare("INSERT IGNORE INTO trucker_edi_comms (container, scac, fac_comments, fac_datestamp) VALUES (:ucont,:uscac,:ucomm,:utime);");
$insert->execute([
'ucont' => $container,
'uscac' => $scac,
'ucomm' => $comment,
'utime' => $time
]);
if($insert)
$containerSuccess[] = $container;
else
$containerFail[] = $container;
}
echo "containers saved: " . implode(', ', $containerSuccess);
echo "containers failed: " . implode(', ', $containerFail);
?>
推荐阅读
- css - CSS:画布大小不正确且不会分层
- r - 如何制作类似的情节?[R]
- fontforge - 如何在我的 True type 字体中添加更多字形?
- c# - EF Core 5 DTO 映射规则和常规 CRUD 操作
- python - 删除与 Panda 中两个电子表格之间的某些列匹配的行
- reactjs - React.js - 使用不同设置多次使用一个组件
- reactjs - 在一个按钮组件中使用不同的 onClick 事件的问题
- excel - 检查 Excel 中不同列的多个值
- java - Nvidia Triton tensorflow 字符串参数
- javascript - 正则表达式模式 a 然后 b 然后 a,一次或多次