我想让用户将他们的联系人从 .csv 文件(从各种联系人管理程序导出)上传到服务器,然后将其保存在 mysql 中。根据我在 SO 和其他地方阅读的内容,MYSQL 可以使用 LOAD DATA INFILE 导入数据。似乎还有一个本地选项可以从客户端获取它。我的三部分问题是:我需要使用文件上传将文件上传到服务器还是可以通过 LOAD DATA INFILE 的 LOCAL 选项直接访问它?由于该应用程序将使用他们的联系人为多个用户提供服务,我应该将所有联系人放在一张表中吗?由于不同的用户在他们的 .csv 文件中会有不同的结构,在不同的 .csv 文件中处理字段名/模式差异的最佳方法是什么?
暂定代码:
<html>
<body>
<form action="getcsvile.php" method="post"
enctype="multipart/form-data">
<input type="file" size=12 name="file" id="file" /><input type="submit" name="submit" value="Upload CSV File" /></form>
<body>
</html>
<?php
$userid = $_SESSION['userid'];
//error checking to make sure .csv file and other requirements met...then
//get extension, set to $ext
$target = "csvfiles/".$userid.".".$ext;
move_uploaded_file($_FILES["file"]["tmp_name"],$target);
//NEED TO PARSE DATA USING fgetcsv or something to examine, clean up csv data?
$sql = "LOAD DATA LOCAL INFILE '$target' INTO TABLE contacts FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES";// IS LOCAL right?
MySQL_query($sql);
$sql2 = "UPDATE contacts SET userid = '$userid';
MySQL_query($sql2);
echo "success;
这看起来是正确的方法吗?容纳来自不同用户的不同 csv 文件可能有多难?
非常感谢。