【发布时间】:2023-03-10 08:01:01
【问题描述】:
我最近询问了如何将 CSV 插入 MySQL 数据库。有人建议我使用 LOAD DATA LOCAL INFILE,但事实证明这在我的主机上被禁用,因此不再是一个选项。回到 PHP 循环..
我在循环临时上传结果时遇到问题,因为我在插入时将值映射到数组。因此,在多行上,这会导致同一条目被输入两次(第一行的值),因为数组值是显式定义的。
先插入 1、2、3、4,再插入 1、2、3、4。我想插入数组的 1、2、3、4,再插入 5、6、7、8。
解决方案是什么(除了 hacky for's 和 row++)?
提前致谢。
$handle = fopen($_FILES['csv']['tmp_name'], "r");
$sql = "INSERT INTO tbl (col1, col2, col3, col4) VALUES (?, ?, ?, ?)";
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$query = $db->prepare($sql);
if ($query->execute(array($data[0],$data[1],$data[2],$data[3]))) return true;
else return false;
}
【问题讨论】:
-
这个循环如何多次运行?你有一个return语句。