MySQL插入账户随机CSV行在PHP上滚动

我将csv插入MySQL数据库。 问题是我的csv文件中每隔一段时间就有一列叫做“ Alternates ,由于某种原因,如果它的数据很长,它将滚动到下一行,使一行专用于该列的多余数据。

所以如果这个列被命名为Alternates并且数据是DFE121-343431 38747那么38747将被滚动到下一行。

我需要find一种方法来解决这个问题,并确保正在滚动的数据也将被input到与其相关数据的其余部分相同的行中。

我会提供一些图片

Excel文件

在这里输入图像说明

CSV数据

在这里输入图像说明

MySQL数据库

在这里输入图像说明

请参阅我创build表的代码打开csv文件转换数据并将其添加到表中

 $sql = "CREATE TABLE IF NOT EXISTS " . $table_name . " ( id int(8) NOT NULL AUTO_INCREMENT, wuno_product varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, wuno_description varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, wuno_alternates varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, wuno_onhand varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, wuno_condition varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;"; $dbh->query($sql); if (($handle = fopen($csv_file, "r")) !== FALSE) { fgetcsv($handle); while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); for ($c=0; $c < $num; $c++) { $col[$c] = $data[$c]; } $col1 = $col[0]; $col2 = $col[1]; $col3 = $col[2]; $col4 = $col[3]; $col5 = $col[4]; // SQL Query to insert data into DataBase $sql = "INSERT INTO " . $table_name . "(wuno_product, wuno_description, wuno_alternates, wuno_onhand, wuno_condition) VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."')"; $dbh->query( $sql ); } fclose($handle); 

这是一个额外的行出现时,实际CSV的样子

 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58 ,,5930-01-109-7580,, 

在那种情况下

 ,,5930-01-109-7580,, 

在它所在的行之后连续出现。

看起来在数字和逗号之间有一个新的字符 – 这应该给你一个模式来清理数据的基础

在将文件传递给fopen开始处理单个行之前,您可以尝试清理数据

 $csv_file='c:/temp/flaky.csv';/* change to suit your environment */ file_put_contents( $csv_file, preg_replace( "@(\r\n),@", ',', file_get_contents( $csv_file ) ) ); 

/ *现在打开fopen并继续* /

示例数据(基本上重复了您引用的示例csv)

 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58 ,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58 ,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58 ,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 

如上所述通过清洁器运行它,并产生一个包含以下内容的csv文件:

 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,, 8869K6X,2POLE TOGGLE SWITCH,MS90311-781,58,58,,5930-01-109-7580,,