2016-09-29 123 views
-1

嘗試使用PHP和CSV導入到MySQL數據庫來更新表。我需要一些幫助。使用PHP將CSV導入到MySQL

我有兩個表:用戶餘額

  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格式CSV更新兩個連接的表。

我會很樂意提供任何幫助和建議。謝謝!

+1

[MySQL中,使用一個查詢更新多個表]的可能的複製(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聲明:

UPDATE balance b 
JOIN users u ON u.ID = b.user_id 
SET b.user_balance = '@balance' 
WHERE u.user_login = '@name' 

@balance@name來自CSV值。