gpt4 book ai didi

PHP 和 MySQL : Import CSV using Column Value as table

转载 作者:行者123 更新时间:2023-11-29 14:03:44 25 4
gpt4 key购买 nike

我已将我当前的代码(不多)放在此页面上供您引用(当然,减去真实密码):http://mafgiftshop.org/MAF/queue/MP/for-reference.php

    $delimiter = ',';
$db = new mysqli('localhost', 'mafgifts_mp', '******', 'mafgifts_mp');

if (($handle = fopen("mpdata.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
foreach($data as $i => $content) {
$data[$i] = $db->real_escape_string($content);
}
echo $data[$i]."";
$db->query("INSERT INTO `MP`
(GiftAmount,GoalAmount,GiftDate,FundID,FundDescription)
VALUES('" . implode("','", $data) . "');");
}
fclose($handle);
}

//THE ABOVE CODE PROPERLY PUTS ALL THE DATA INTO THE MySQL DATABASE, BUT I'M NOT
//ABLE TO DO THE CALCULATIONS I WANT AND INSERT ONLY THE RESULTING DATA.

所以我有一个包含 5 列信息的 CSV 文件。没有空白值。例如:

GiftAmount、GoalAmount、GiftDate、FundID、FundDescription(此行不在 CSV 中;仅供引用)

  • "$10"、"$500"、"1/1/2012"、"8008"、"8008基金说明"
  • "$20"、"$500"、"2/10/2012"、"8008"、"8008基金说明"
  • "$62"、"$500"、"1/12/2012"、"8008"、"8008基金说明"
  • “38 美元”、“1,000 美元”、“2012 年 3 月 31 日”、“9102”、“9102 基金说明”
  • “21 美元”、“1,000 美元”、“2012 年 4 月 6 日”、“9102”、“9102 基金说明”

我需要做的是在 FundID 相同的情况下添加“GiftAmount”列,并将结果放入 MySQL 数据库中。因此,对于上述数据,生成的 MySQL 表如下:

  • “92 美元”| “500 美元”| “8008”| “8008基金说明”(注意不再需要GiftDate)
  • “59 美元”| “1,000 美元”| “9102”| 《9102基金简介》

我使用 PHP 来完成此任务,并且 PHP 文件将每天在 Cron 作业中运行,因为 CSV 文件将根据不同基金的新礼物每天进行更改。

顺便说一句,CSV 文件目前有 8,794 行和很多很多 FundID。

最佳答案

我会将 FundID 设置为 MYSQL 中的唯一键,然后使用 INSERT INTO ... ON DUPLICATE KEY UPDATE查询。

    $db->query("INSERT INTO `MP` (GiftAmount,GoalAmount,GiftDate,FundID,FundDescription) VALUES('" . implode("','", $data) . "') ON DUPLICATE KEY UPDATE GiftAmount=GiftAmount+".intval($data[0]).";");

这假设 GiftAmount 是数字列,并且您没有将其存储为字符串。

关于PHP 和 MySQL : Import CSV using Column Value as table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14690987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com