2016-09-29 15 views
-1

PHPとCSVでテーブルを更新しようとするとMySQL DBにインポートされます。そして私は助けが必要です。PHPを使用してCSVにMySQLをインポートする

ユーザー残高の2つのテーブルがあります。

  1. ユーザー
    ID | USER_LOGIN |
    1 | name1 |
    2 | name2 |

  2. バランス
    のuser_id | user_balance |
    1 | 1000 |
    2 | 2000 |動作のための

問合せ:

SELECT users.user_login, balance.user_balance 
FROM `users` , `balance` 
WHERE `ID` = `user_id` 

CSVファイル、この構造を持っている:

名1; 3000
名2; 5000

しかし、私はどのように知りませんIDとuser_idを持つ2つの接続されたテーブルがCSVを形成することを更新します。

私は何か助けと助言を喜んでおられます。ありがとう!

+1

の可能性のある重複した[MySQLのを、1つのクエリで複数のテーブルの更新](http://stackoverflow.com/questions/4361774/mysql-update-multiple-tables-with-one-query)を –

+0

この質問はあります広すぎて不明瞭です。一方では、データの読み込みがあります。最初のテーブルのデータが欠落している場合のインサートと更新の対処についての言及はありません。次に、結合による更新があります。 'LOAD DATA INFILE'(私のアプローチ)のために振れるものもあります。他のものは(大きなテーブル用の)低速ルートになり、PHPファイルI/Oを持っています。 – Drew

+1

あなたの質問に答えを加えないでください。代わりにアンサーボックスを使用してください(質問が再開された場合)。 –

答えて

4

まず、CSVファイルからデータを取得します。

$row = 1; 
if (($handle = fopen("data.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $num = count($data); 
     echo "<p> $num fields in line $row: <br /></p>\n"; 
     $row++; 
     for ($c=0; $c < $num; $c++) { 
      echo $data[$c] . "<br />\n"; 
     } 
    } 
    fclose($handle); 
} 

次に、更新クエリを実行します。

UPDATE balance b JOIN users u ON u.ID = b.user_id 
SET b.user_balance = $data['balance'] 
WHERE u.user_login = $data['user_login'] 
1

あなたはこのUpdate声明を試すことができます:

@balance@nameCSVからの値です
UPDATE balance b 
JOIN users u ON u.ID = b.user_id 
SET b.user_balance = '@balance' 
WHERE u.user_login = '@name' 

関連する問題