gpt4 book ai didi

php - 无法将数据从 csv 插入列数未知的 mysql 数据库

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

我已经有几天遇到这个非常烦人的问题了,我做了研究和一切,但它似乎比我的编程技能和知识更重要。

我有这样一种情况,用户可以在我的数据库的表中定义自定义列,现在我需要将 CSV 文件导入到该用户的自定义表中。因为我最近发现表需要是“动态的”,所以我以前是这样处理导入的:

$file = $_FILES['file']['tmp_name'];
$handle = fopen($file, "r");
$name = $_FILES['file']['name'];
if (strrpos($name, '.csv', -4)) {//handling the csv file
do {
if ($data[0]) {
$mysqli->query("INSERT INTO `test` (`name`, `surname`, `email`) VALUES
(
'" . addslashes($data[0]) . "',
'" . addslashes($data[1]) . "',
'" . addslashes($data[2]) . "'
)
");

}
} while ($data = fgetcsv($handle, 1000, ",", "'"));

这与静态表完美配合。但是因为我不知道表会有多少列,所以我尝试了这样的事情:

构建查询方法

 if (strrpos($name, '.csv', -4)) {//ubacije vrijednosti csv fajla u bazu
do {
if ($data[0]) {
$query = "INSERT INTO $tabela (";
$last = end($anotherArray);
foreach ($anotherArray as $something) {//$anotherArray contains names of fields in user's custom table
if ($something != $last) {
$query .= "" . $something . ",";
} else {
$query .= "" . $something . ")";
}
}

$query .= "VALUES (";
foreach($data as $val){
$query .= "'$val',";
}


}while ($data = fgetcsv($handle, 1000, ",", "'"));

$query=rtrim($query,',');
$query.=")";
//var_dump($query);
$rez=$mysqli->query($query);
//var_dump($rez);

但此代码的问题是,如果 csv 文件包含例如 2 个或更多列,如下所示:enter image description here

一切都成为查询的 VALUES 部分的一部分。所以查询看起来像这样:"INSERT INTO tabela12312334 (user_facebook_id,ime,prezime) VALUES('123123123','Ognjen','Babic','123123123','Neven',Babic)" 和当然,字段数与值数不同。

请帮我解决这个问题,我很绝望。

最佳答案

试试这个

LOAD DATA LOCAL INFILE  
'c:/path-to-csv-file/your-file.csv'
INTO TABLE your_awesome_table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(field_1,field_2 , field_3);

注意:第一行作为您字段的标题,您可能需要在 CSV 文件中包含标题

关于php - 无法将数据从 csv 插入列数未知的 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35748971/

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