我正在使用 PDO 将记录从一个表插入到另一个表中。
我正在 try catch 已成功插入到另一个表中的记录,同时还捕获可能无法插入的记录。
<?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);
?>
关于php - 捕获成功插入的记录到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55305449/