gpt4 book ai didi

php - 将 CSV 中的 1 行以上插入 mysql 数据库时出现问题

转载 作者:行者123 更新时间:2023-11-30 01:30:20 25 4
gpt4 key购买 nike

我目前能够将 CSV 中的一行数据添加到数据库中,但无法添加下一行和下一行。

我只是问为什么只有一行被插入到数据库中,并且它们是否有一种修复方法可以使所有行开始插入到数据库中?

代码如下:

include('config.php');

$file = "test.csv";
$separator = ",";
$length = 0; // size of the longest line(!), 0 = no limit
$fields = array('title', 'firstName', 'secondName', 'emailAddress', 'houseNumber', 'mobileNumber', 'address1', 'address2', 'address3', 'address4', 'postcode'); // use it as a white list

$handle = fopen($file, "r");

$header = array_flip(fgetcsv($handle, $length, $separator));

$values = array();

$i = 1;
while(($csvData = fgetcsv($handle, $length, $separator)) !== false){
echo $i." - You have inserted another row of data into the database.<br>";
foreach ($fields as $field){ // put all values in an array in correct order
$values[] = $csvData[$header[$field]];
}
mysql_query("INSERT INTO csv (" . implode(',', array_keys($header)) . ") VALUES ('" . implode("','", $values) . "')");
$i++;
}

fclose($handle);

最佳答案

您正在使用 $header 将值映射到 $fields 顺序,因此您的插入应该具有 $fields 顺序而不是 $header 顺序的字段。

mysql_query("INSERT INTO csv (" . implode(',', $fields) . ") VALUES ('" . implode("','", $values) . "')");

此外,清理数据以确保其正确转义也是一个好主意。

$values = array_map("mysql_real_escape_string", $values);

在你的 mysql_query 调用之前应该这样做。

此外,您不会在每次迭代时重新初始化 $values,因此在插入第 2 行时,您将获得第 1 行 + 第 2 行的字段。

所以在打开 while 语句后执行

$values = array();

重新初始化它。

关于php - 将 CSV 中的 1 行以上插入 mysql 数据库时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17552262/

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