将csv文件中的记录插入数据库表不会从序列的第一列中获取记录


Insert the record from csv file into database table will not fetch record from first column in a series

我会向您发送我用来将csv文件中的数据插入数据库表的代码,但它不会从开始插入数据并连续到最后一条记录,而是随机提取记录。请建议我更改当前代码,以便它将从开始连续到最后提取csv文件中的每条记录

 <?php
 $connect = mysql_connect("localhost","root","");
 set_time_limit(0);
 if (!$connect) 
 {
 die('Could not connect to MySQL: ' . mysql_error());
 }
 $cid=mysql_select_db("bond1",$connect);
 define("CSV_PATH","D:/wamp/www/csvfile/");                                                       
 $csv_file=CSV_PATH."file.csv";
 $csvfile=fopen($csv_file, 'r');
 $theData=fgets($csvfile);
 $i=0;
 while(!feof($csvfile))
 {
 $csv_data[] = fgets($csvfile,1024);
 $csv_array=explode(",", $csv_data[$i]);
 $insert_csv=array();
 $insert_csv['name']=$csv_array[0];
 $insert_csv['address']='http://'.$csv_array[1];
 $insert_csv['duns_number']=$csv_array[2];
 $insert_csv['idnum']=$csv_array[3];
 $query="insert into  companyinfo(name,address,duns_number,id_number)values('".$insert_csv['name']."','".$insert_csv['address']."','".$insert_csv['duns_number']."','".$insert_csv['idnum']."')";
  $n=mysql_query($query,$connect);
  ++$i;
  }
  fclose($csvfile);
  echo "File data successfully imported to database!!";
  mysql_close($connect);
  ?>

http://php.net/manual/en/function.str-getcsv.php

使用该函数可以自动将csv解析为数组。

不用在循环文件指针的feof时签入

while(!feof($csvfile))

循环时将fgets($csvfile,1024);移动到内部

 while (($csv_data = fgets($csvfile, 4096)) !== false) {

并在下面更改您的代码。希望它能解决你的问题。

这将帮助您进一步

<?php
set_time_limit(0);
$i = 0;
//create database connection
$con=mysqli_connect("localhost","root","","my_db");
// Check connection
if (mysqli_connect_errno()) 
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
while (!feof($csvfile)) 
{
    $csv_data = fgets($csvfile, 1024);
//if it is first row skip here  || if any value is empty then skip the row
 if($i==0 || 
    (empty($csv_array[0]) || 
     empty($csv_array[1]) ||
     empty($csv_array[2]) ||
     empty($csv_array[3])))
    {
        ++$i;
        //continue the loop
        continue;
    }
    $csv_array = explode(",", $csv_data);
    $insert_csv = array();
    $insert_csv['name'] = $csv_array[0];
    $insert_csv['address'] = 'http://' . $csv_array[1];
    $insert_csv['duns_number'] = $csv_array[2];
    $insert_csv['idnum'] = $csv_array[3];
    $sql = "INSERT INTO companyinfo(name,address,duns_number,id_number)
            VALUES('" . $insert_csv['name'] . "',‌
            ​'" . $insert_csv['address'] . "',
            '" . $insert_csv['duns_number'] . "',
            '" . $insert_csv['idn‌​um'] . "')";
    //insert the query
    if (!mysqli_query($con,$sql)) 
    {
      die('Error: ' . mysqli_error($con));
    }
}