在导入LOAD DATA INFILE时将我的php变量连接到csv数据

问题描述 投票:0回答:1

我需要将一些csv文件导入mysql。

我最近发现了LOAD DATA INFILE,据我所知,我检查了手册,将每行.csv文件导入数据库。

我想知道是否有一个选项可以将额外的值连接到csv文件包含的内容。

例如:我的表有3列。

MYTABLE(#姓名,号码电子邮件,company_adrs);

csv文件只有“name,email”的数据,我在php变量中有地址。

使用正常循环,我将实现如下:

//open file
while (/* not end of file, read eachline*/)
{
  $current_line_of_csv_file; // contains: "John,[email protected]" without the 3rd column
  $myAddrsVar= mysqli_real_escape_string($db, $_POST['adrs']); //"44 company st" 
  $insert = $db->query("INSERT MYTABLE (name,email,company_adrs) VALUES ( $current_line_of_csv_file,'".$myAddrsVar."')");

}

使用这种方法,我必须遍历每行csv并在每次迭代中进行查询。

我想知道LOAD DATA INFILE是否有将数据连接到csv文件的方法?如果是的话,我该怎样才能实现呢?

提前致谢

mysql mysqli load-data-infile mysqlimport
1个回答
0
投票

鉴于你的情况,我建议使用PHP all-in-all并以这种方式将数据插入MySQL。

https://www.php.net/manual/en/function.str-getcsv.php可以帮助您将CSV解析为数组。将数据添加到数组中。现在,您将数据集放在数组中。

使用这里显示的准备好的语句https://websitebeaver.com/prepared-statements-in-php-mysqli-to-prevent-sql-injection并一个接一个地插入数据。

使用事务以便插入所有数据或不插入任何数据。见How to start and end transaction in mysqli?

我会避免使用LOAD DATA INLINE,因为数据量并不大。如果您确实想要使用它并添加另一列,则可以使用SET语句。这里有一个例子:Add extra column of data when using LOAD DATA LOCAL INFILE

© www.soinside.com 2019 - 2024. All rights reserved.