php - CSV 数据库输入导致每列占一行

标签 php mysql csv

我已成功将来自 csv 的数据存入数据库,但由于某种原因,查询产生的结果与 csv 中相同列数的 7 倍相同。

<?php

$host="localhost";
$user="general";
$pass="gretna22607";
$db="general";
$con=mysqli_connect($host, $user, $pass) or die ('Error connecting to mysql' . mysqli__error());
mysqli_select_db($con,$db) or die ('Error connecting to database' . mysqli__error());
$empty="TRUNCATE csvimport";
mysqli_query($con,$empty);

$csvdata = file_get_contents('http://www.overclockers.co.uk/productfeed/b2b_cs312.csv');

$csv_file="ocuk.csv";

if (($getfile = fopen($csv_file, "r")) !== FALSE)
    {
        while (($data = fgetcsv($getfile, 1000, ",")) !== FALSE)
            {
                $num = count($data);
                for ($a=0; $a < $num; $a++)
                    {
                        $results=$data;
                        $str = implode(",", $results);
                        $slice = explode(",", $str);
                        $col1 = $slice[0];
                        $col2 = $slice[1];
                        $col3 = $slice[2];
                                            $col4 = $slice[3];
                                            $col5 = $slice[4];
                                            $col6 = $slice[5];
                                            $col7 = $slice[6];

                        // SQL Query to insert data into DataBase

                        //$query = "INSERT INTO csvimport (tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7) VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."','".$col6."','".$col7."')".";";
                        //$query = "INSERT INTO csvimport VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."','".$col6."','".$col7."','','','')".";";
                        //mysqli_query($con,$query);
                    }
                $query = "INSERT INTO csvimport (tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7) VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."','".$col6."','".$col7."')".";";
                                 mysqli_query($con,$query);
            }
    }
fclose($csv_file);
mysqli_close();

?>

例如

如果我回显查询

第一个是这样的

insert into csvimport ('test','test','test','','','','');
insert into csvimport ('test2','test2','test2','','','','');
insert into csvimport ('test3','test3','test3','','','','');
insert into csvimport ('test4','test4','test4','','','','');
insert into csvimport ('test','test','test','','','','');
insert into csvimport ('test','test','test','','','','');
insert into csvimport ('test2','test2','test2','','','','');
insert into csvimport ('test2','test2','test2','','','','');

我希望它只获取 csv 的每一行一次并将其与所有 7 列一起输入到数据库中

最佳答案

删除这一行:

$data = fgetcsv($getfile, 1000, ",");

然后移动这些行:

$query = "INSERT INTO csvimport (tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7) VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."','".$co$
//$query = "INSERT INTO csvimport VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."','".$col6."','".$col7."','','','')".";";
mysqli_query($con,$query);

for循环之外

关于php - CSV 数据库输入导致每列占一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24939911/

相关文章:

php - 这个查询有什么问题

php - 按过期日期对结果排序,过期在最后

java - 如何将 string = "\t"转换为 char

javascript - 在 JS 中向突出显示的文本添加标签不起作用

php - 如何打开没有后缀的附件文件?

mysql查询获取不同的最新记录

mysql - 在同一个 SQL.Server 上跨 2 个数据库加入时的 COLLATE 问题

php - 如何取出不在两个日期之间的所有行?

python - 使用 glob 后如何将数据框合并到一个 csv 文件中?

java - 如何使用 OpenCSV 跳过 csv 文件中嵌入的 "newlines"