CSV ЗАГРУЗИТЬ НА MYSQL С переполнением стека

Привет, у меня в настоящее время есть этот php-файл, который будет импортировать данные CSV в базу данных MySQL каждый раз, когда он запускается, однако я хочу, чтобы он перезаписывал текущие данные в базе данных, а не просто продолжал добавлять к ним каждый раз, когда он запускается. Вот файл минус мои данные:

<?php

//database connection details
$connect = mysql_connect('mydetails','mydetails','mydetails');

if (!$connect) {
die('Could not connect to MySQL: ' . mysql_error());
}

//your database name
$cid =mysql_select_db('mydetails',$connect);

// path where your CSV file is located
define('CSV_PATH','myfile location');

// Name of your CSV file
$csv_file = CSV_PATH . "my file";if (($handle = fopen($csv_file, "r")) !== FALSE) {
fgetcsv($handle);
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
for ($c=0; $c < $num; $c++) {
$col[$c] = $data[$c];
}

$col1 = $col[0];
$col2 = $col[1];
$col3 = $col[2];
$col4 = $col[3];

// SQL Query to insert data into DataBase
$query = "INSERT INTO     orders(OrderNumber,OrderCustomer,OrderReqdQty,OrderStatus)     VALUES('".$col1."','".$col2."','".$col3."','".$col4."')";
$s     = mysql_query($query, $connect );
}
fclose($handle);
}

echo "File data successfully imported to database!!";
mysql_close($connect);
?>

0

Решение

Кажется, у вас есть уникальный OrderNumber. Добавьте правильный ключ в таблицу и используйте синтаксис ON DUPLICATE UPDATE.

Больше на эту тему здесь: http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

— РЕДАКТИРОВАТЬ —
Сначала вам нужно добавить правильный уникальный ключ в вашу таблицу:

ALTER TABLE orders add UNIQUE(OrderNumber);

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

Теперь вы модифицируете свой скрипт примерно так:

INSERT INTO orders(OrderNumber, OrderCustomer, OrderReqdQty, OrderStatus) VALUES('".$col1."','".$col2."','".$col3."','".$col4."') ON DUPLICATE KEY UPDATE OrderCustomer='".$col2."', OrderReqdQty='".$col3."', OrderStatus='".$col4."'";

Тогда каждый раз, когда OrderNumber будет найден в таблице, вместо выдачи ошибки, будет выполнено ОБНОВЛЕНИЕ этой самой строки.

1

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

Других решений пока нет …

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