Добрый день, уважаемы участники форума. У меня есть скрипт импорта данных из CSV в базу данный MYSQL. Скрипт рабочий, работает стабильно. Но мне нужно что бы он перед загрузкой данных из СSV УДАЛИЛ строки которые уже содержаться в базе. Т.е. схема такая :
1) Проверяет есть ли строки в базе данных с таким же ID как в листе CSV. Сам же ID указан в пером столбце таблицы ;
2) Если такие строки есть, то он их удаляет ;
3) А дальше загружает все данные из листа в базу.
Это нужно для обновления данных в таблице по ID / Может быть есть более правильный вариант.... я не знаю.
Буду очень благодарен - если кто нибудь даст совет :)
Мой код:
set_time_limit(2400);
$mysqli = new mysqli("localhost" , "---" , "---" , "----");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$table_name= "account";
$csv_file = "2221.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['id'] =mysqli_real_escape_string( $mysqli, $csv_data[0] ); // 1
$field_csv['name'] = mysqli_real_escape_string( $mysqli, $csv_data[1] ); // 2
$field_csv['tel2'] = mysqli_real_escape_string( $mysqli, $csv_data[2] ); // 3
$query = "INSERT INTO $table_name SET id = '".$field_csv['id']."',name = '".$field_csv['name']."',tel2 = '".$field_csv['tel2']."' ";
mysqli_query($mysqli,$query);
}
fclose($csvfile);
echo "CSV data successfully imported to table!! - OK";
// close connection
$mysqli->close();