импорт файла CSV в базу данных MySQL с использованием ошибки php для импорта

Импорт файла CVS (Файл значений Microsoft Office Excel с разделителями-запятыми (.csv)) в phpmyadmim с использованием сценария php.
Когда я импортирую файл CSV, то он не импортируется должным образом в базу данных.
Строка оканчивается на «,» Пожалуйста, подскажите, как мне сделать так, чтобы строка оканчивалась на «авто», я прилагаю образец файла.

я просто делюсь CSV-файлом по этой ссылке
http://www.soniinfotech.com/product-data.csv

После некоторых предложений и исправлений я получаю другую проблему.
Фактический размер файла cvs составляет 106700 строк, а его вставка — 81499 строк.
Я вставлял файлы несколько раз, но всего 81499 вставок.
Пожалуйста, помогите мне решить эту проблему, как я могу вставить все строки в базу данных.

<?php

set_time_limit(2400);

$mysqli = new mysqli("localhost" , "user" , "pass" , "db");

// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$table_name= "store";

$csv_file = "import.csv"; // Name of your CSV file
$csvfile = fopen($csv_file, 'r');
$field_csv = array();
$i = 0;
while (($csv_data = fgetcsv($csvfile, 0, ",")) !== FALSE) {     if($i==0) { $i++; continue; }  // to exclude first line in the csv file.

$field_csv['productId'] = $csv_data[0];  // 1
$field_csv['title'] = $csv_data[1]; // 2
$field_csv['description'] = $csv_data[2]; // 3
$field_csv['imageUrlStr'] = $csv_data[3];  // 4
$field_csv['mrp'] = $csv_data[4]; // 5
$field_csv['price'] = $csv_data[5]; // 6
$field_csv['productUrl'] = $csv_data[6];  // 7
$field_csv['categories'] = $csv_data[7]; // 8
$field_csv['productBrand'] = $csv_data[8]; // 9
$field_csv['deliveryTime'] = $csv_data[9];  // 10
$field_csv['inStock'] = $csv_data[10]; // 11
$field_csv['codAvailable'] = $csv_data[11]; // 12
$field_csv['emiAvailable'] = $csv_data[12];  // 13
$field_csv['offers'] = $csv_data[13]; // 14
$field_csv['discount'] = $csv_data[14]; // 15
$field_csv['cashBack'] = $csv_data[15];  // 16
$field_csv['size'] = $csv_data[16]; // 17
$field_csv['color'] = $csv_data[17]; // 18
$field_csv['sizeUnit'] = $csv_data[18];  // 19
$field_csv['sizeVariants'] = $csv_data[19]; // 20
$field_csv['colorVariants'] = $csv_data[20]; // 21
$field_csv['styleCode'] = $csv_data[21]; // 22

$query = "INSERT INTO $table_name SET productId = '".$field_csv['productId']."',title = '".$field_csv['title']."',description = '".$field_csv['description']."',imageUrlStr = '".$field_csv['imageUrlStr']."',mrp = '".$field_csv['mrp']."',price = '".$field_csv['price']."',productUrl = '".$field_csv['productUrl']."',categories = '".$field_csv['categories']."',productBrand = '".$field_csv['productBrand']."',deliveryTime = '".$field_csv['deliveryTime']."',inStock = '".$field_csv['inStock']."',codAvailable = '".$field_csv['codAvailable']."',emiAvailable = '".$field_csv['emiAvailable']."',offers = '".$field_csv['offers']."',discount = '".$field_csv['discount']."',cashBack = '".$field_csv['cashBack']."',size = '".$field_csv['size']."',color = '".$field_csv['color']."',sizeUnit = '".$field_csv['sizeUnit']."',sizeVariants = '".$field_csv['sizeVariants']."',colorVariants = '".$field_csv['colorVariants']."',styleCode = '".$field_csv['styleCode']."' ";
mysqli_query($mysqli,$query);
}
fclose($csvfile);

echo "CSV data successfully imported to table!!";

// close connection
$mysqli->close();
?>

2

Решение

Существует ряд проблем с предоставленным вами кодом:

1. Не указывайте максимальную ширину линии

Укажите параметр длины (второй параметр) для fgetcsv() только если вы знаете, этого будет достаточно, чтобы прочитать всю строку. В противном случае просто используйте 0 (ноль), чтобы PHP автоматически обнаруживал разрывы строк. (он даже будет разумно использовать новые строки, которые фактически ломают строки, избегая разрывов строк, которые могут произойти в указанных значениях CSV)

fgetcsv($csvfile, 0, ",")

2. Избегайте строк перед вставкой в ​​БД

Когда вы вставляете строковые значения в MySQL, вам нужно правильно их экранировать. Если вы этого не сделаете, а строка содержит кавычку, это может нарушить ваш SQL-запрос, что приведет к неудачным вставкам.

Использование неэкранированных строк также создает риск SQL-инъекция.

Чтобы избежать строк, используйте mysqli_real_escape_string() функция.

т.е .:

$field_csv['productId'] = mysqli_real_escape_string( $mysqli, $csv_data[0] );  // 1
$field_csv['title'] = mysqli_real_escape_string( $mysqli, $csv_data[1] ); // 2
$field_csv['description'] = mysqli_real_escape_string( $mysqli, $csv_data[2] ); // 3
$field_csv['imageUrlStr'] = mysqli_real_escape_string( $mysqli, $csv_data[3] );  // 4
// ... etc.

3. Используйте mysqli_error () для отладки возможных ошибок в ваших SQL-запросах.

Если вы не проверяете ошибки в запросах SQL, вы работаете вслепую. Если что-то не так, вы можете даже не заметить этого.

Всегда проверяйте возвращаемое значение mysqli_query(). (он вернет логическое значение FALSE на неудачный запрос) и распечатайте ошибку, используя mysqli_error()

if ( ! mysqli_query( $mysqli,$query ) ) {
printf( "Error: %s\n", mysqli_error( $mysqli ) );
}
1

Другие решения

<?php

set_time_limit(2400);

$mysqli = new mysqli("host" , "user" , "pass" , "db");

// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$table_name= "store";

$csv_file = "import.csv"; // Name of your CSV file
$csvfile = fopen($csv_file, 'r');
$field_csv = array();
$i = 0;
while (($csv_data = fgetcsv($csvfile, 0, ",")) !== FALSE) {
if($i==0) { $i++; continue; }  // to exclude first line in the csv file.

$field_csv['productId'] =mysqli_real_escape_string( $mysqli, $csv_data[0] );  // 1
$field_csv['title'] = mysqli_real_escape_string( $mysqli, $csv_data[1]     ); // 2
$field_csv['description'] = mysqli_real_escape_string( $mysqli, $csv_data[2] ); // 3
$field_csv['imageUrlStr'] = mysqli_real_escape_string( $mysqli, $csv_data[3] );  // 4
$field_csv['mrp'] = mysqli_real_escape_string( $mysqli, $csv_data[4] ); // 5
$field_csv['price'] = mysqli_real_escape_string( $mysqli, $csv_data[5] ); // 6
$field_csv['productUrl'] = mysqli_real_escape_string( $mysqli, $csv_data[6] );  // 7
$field_csv['categories'] = mysqli_real_escape_string( $mysqli, $csv_data[7] ); // 8
$field_csv['productBrand'] = mysqli_real_escape_string( $mysqli, $csv_data[8] ); // 9
$field_csv['deliveryTime'] = mysqli_real_escape_string( $mysqli, $csv_data[9] );  // 10
$field_csv['inStock'] = mysqli_real_escape_string( $mysqli, $csv_data[10] ); // 11
$field_csv['codAvailable'] = mysqli_real_escape_string( $mysqli, $csv_data[11] ); // 12
$field_csv['emiAvailable'] = mysqli_real_escape_string( $mysqli, $csv_data[12] );  // 13
$field_csv['offers'] = mysqli_real_escape_string( $mysqli, $csv_data[13] ); // 14
$field_csv['discount'] = mysqli_real_escape_string( $mysqli, $csv_data[14] ); // 15
$field_csv['cashBack'] = mysqli_real_escape_string( $mysqli, $csv_data[15] );  // 16
$field_csv['size'] = mysqli_real_escape_string( $mysqli, $csv_data[16] ); // 17
$field_csv['color'] = mysqli_real_escape_string( $mysqli, $csv_data[17] ); // 18
$field_csv['sizeUnit'] = mysqli_real_escape_string( $mysqli, $csv_data[18] );  // 19
$field_csv['sizeVariants'] = mysqli_real_escape_string( $mysqli, $csv_data[19] ); // 20
$field_csv['colorVariants'] = mysqli_real_escape_string( $mysqli, $csv_data[20] ); // 21
$field_csv['styleCode'] = mysqli_real_escape_string( $mysqli, $csv_data[21] ); // 22


$query = "INSERT INTO $table_name SET productId = '".$field_csv['productId']."',title = '".$field_csv['title']."',description = '".$field_csv['description']."',imageUrlStr = '".

$field_csv['imageUrlStr']."',mrp = '".$field_csv['mrp']."',price = '".$field_csv['price']."',productUrl = '".$field_csv['productUrl']."',categories = '".$field_csv['categories']."',productBrand = '".

$field_csv['productBrand']."',deliveryTime = '".$field_csv['deliveryTime']."',inStock = '".$field_csv['inStock']."',codAvailable = '".$field_csv['codAvailable']."',emiAvailable = '".$field_csv

['emiAvailable']."',offers = '".$field_csv['offers']."',discount = '".$field_csv['discount']."',cashBack = '".$field_csv['cashBack']."',size = '".$field_csv['size']."',color = '".$field_csv

['color']."',sizeUnit = '".$field_csv['sizeUnit']."',sizeVariants = '".$field_csv['sizeVariants']."',colorVariants = '".$field_csv['colorVariants']."',styleCode = '".$field_csv['styleCode']."' ";
mysqli_query($mysqli,$query);

}

fclose($csvfile);

echo "CSV data successfully imported to table!!";

// close connection
$mysqli->close();
?>
0

По вопросам рекламы [email protected]