2016-09-29 212 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值。