亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 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 關注
  • 135 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號