2016-03-30 10 views
0

こんにちは、私は現在、データベースの現在のデータを上書きするだけで、トリガされるたびにcsvデータをmysqlデータベースにインポートするこのphpファイルを持っています。ここにファイルからマイディテールを除いたものがあります:PHPでMySQLにCSVをアップロードする

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

TODO: 1.チェック 'OrderNumber'それはあなたのDBに存在している場合 2.存在しない場合は、UPDATE文に 3.操作を行う既存の場合の対処とINSERT文 –

+0

<挿入義務**使用いけませんmysqlドライバ、その死んだ**ここのメッセージ> – DevDonkey

答えて

1

あなたは一意のOrderNumberを持っているようです。適切なキーをテーブルに追加し、ON UPDATE UPDATE構文を使用します。ここでは、このトピックに関する

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

--- EDIT --- まず、あなたのテーブルに正しいユニークキーを追加する必要があります。

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."'"; 

が続いて毎回注文番号ではなく、エラーを投げるのテーブルの中に発見され、この非常に行に対して実行UPDATEがあるでしょう。

+0

私はこれをかなり新しくしています。これを実装する方法を上記のコードに教えてください。私はPHPファイルが動作しているように、正しいデータベーステーブルを持っていますが、私はちょうど追加/複製情報を保持し、それを上書きしないと言います。皆に事前に感謝:) – bigmacca1980

関連する問題