php - 捕获成功插入的记录到数组中

标签 php mysql arrays pdo

我正在使用 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/

相关文章:

mysql - 当名字和姓氏存储在不同的列中时如何搜索全名

PHP htaccess 代替 $_GET

php - 我的 php 上传脚本没有结果?

javascript - 我应该将 10,000 行加载到 Angular 应用程序的内存中吗?

c++ - 尝试将数组作为参数传递,出现 double[4] 到 double 转换错误

javascript - 通过javascript中的对象数组过滤

java - 为什么我的应用程序在设置数组后崩溃?

javascript - WooCommerce 购物车数量按钮仅在重新加载后显示

javascript - 实时表编辑其他 mySQL 表中的显示字段

php - 如何从用户表单 PHP 安全地编辑数据库中的信息