2016-03-30 24 views
0

Merhaba Ben her zaman tetiklenir her zaman ekleyerek veritabanında geçerli verilerin üzerine yazmak istiyorum ama her zaman tetiklenir csv veri mysql veritabanı içine alacak bu php dosyası var . İşte dosya eksi benim ayrıntıları:CSV MySQL İLE MySQL İLE YÜKLENMESİ

<?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

YAPILACAK: 1. Kontrol 'OrderNumber' sizin DB varolan eğer 2. mevcut DEĞİL ise bir UPDATE deyimi 3. do mevcut olmadığını yapmak ve INSERT TABLOSU –

+0

DevDonkey

cevap

1

Benzersiz bir OrderNumber var gibi görünüyor. Tabloya uygun anahtarı ekleyin ve DUPLICATE UPDATE sözdizimini kullanın. Bu konuya ilişkin

Daha: http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

--- DÜZENLEME --- Öncelikle tabloda doğru benzersiz anahtarı eklemek gerekir:

ALTER TABLE orders add UNIQUE(OrderNumber); 

Bu sorgu benzersiz anahtarı ekleyin ve gelen gerekir şimdi üzerinde yinelenen OrderNumber yoktur. Veritabanında varsa, bu sorgu yüzünüzde uygun hata mesajı atar. Aynı OrderNumber ile başka bir giriş eklemeyi denerseniz, aynı zamanda hata mesajı ile memnuniyetle karşılanacaktır.

Şimdi böyle bir şey ile komut değiştirin:

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

Sonra her ORDERNUMBER yerine bir hata atma tablo içinde bulunursa, bu çok satırda gerçekleştirilen UPDATE olacaktır.

+0

Bunun için oldukça yeniyim, yukarıdaki kodu nasıl uygulayacağınızı bana aktarabilir misiniz? Ben php dosyası çalışıyor gibi doğru veritabanı tablosu var ama ben sadece ekleyerek/çoğaltmaya devam ediyor ve üzerine yazmıyor gibi. Herkese şimdiden teşekkür ederiz :) – bigmacca1980