为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 CSV 文件中的不同行放入表中?

如何将 CSV 文件中的不同行放入表中?

PHP
幕布斯6054654 2023-08-19 16:46:20
我想将我的 csv 上传文件的第 1 行放入表 tab1........ 并将第 2 行放入表 tab2我努力了:$myid = 231;if (isset($_POST["submit"])) {    $file = $_FILES['file']['tmp_name'];    if (($handle = fopen($file, "r")) !== FALSE) {        $row = 0;        while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) {            if ($row == 1) {                $row++;                continue;            }            $row++;            foreach (['tab1', 'tab2'] as $table) {                $stmt = $pdo->prepare("UPDATE $table SET fname=?, lname=? WHERE id=?");                $stmt->execute([$data[0], $data[1], $myid]);            }        }        fclose($handle);    }}
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

问题是因为要插入到表中的 foreach 循环每次在 while 循环周围都会插入到两个表中。仅当 $row==1 且 tab2 为 $row==2 时才插入 tab1。试试这个(未经测试):


$myid = 231;

if (isset($_POST["submit"])) {

    $file = $_FILES['file']['tmp_name'];

    if (($handle = fopen($file, "r")) !== FALSE) {

        $row = 0;

        $tables = ['tab1', 'tab2'];


        while (($data = fgetcsv($handle)) !== FALSE && $row<3) {

            if ($row > 0) {

              $stmt = $pdo->prepare("UPDATE ".$tables[$row-1]." SET fname=?, lname=? WHERE id=?");

              $stmt->execute([$data[0], $data[1], $myid]);

            }

            $row++;

        }

        fclose($handle);

    }

}

我创建了两个表的数组,然后根据行号更新相关表。


当我们达到 2 行时,我还添加了一个中断,以防 CSV 的行数超出您的预期。


查看完整回答
反对 回复 2023-08-19
  • 1 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信