Я вышлю вам код, который я использовал для вставки данных из 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['idnum'] . "')";
//insert the query
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
}