[英]Importing CSV file into MySQL with PHP
I am writing a PHP script that imports CSV data from a myriad of customers.我正在编写一个 PHP 脚本,用于从无数客户导入 CSV 数据。 The data has 12 rows and 10 columns (see below).数据有 12 行和 10 列(见下文)。 When I use phpMyAdmin's MySQL Import, there is NO problem (all 12 rows import fine!) However, when I try to import using the PHP script, it only imports the first line, or the last line.当我使用 phpMyAdmin 的 MySQL 导入时,没有问题(所有 12 行导入都很好!)但是,当我尝试使用 PHP 脚本导入时,它只导入第一行或最后一行。 I've Googled many different ways to write the same script to no avail.我用谷歌搜索了许多不同的方法来编写相同的脚本,但无济于事。 The goal is for the user to be able to upload a CSV into the table automatically.目标是让用户能够自动将 CSV 上传到表格中。
if ($_FILES[csv][size] > 0) {
//get the csv file
$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");
//loop through the csv file and insert into database
do {
if ($data) {
mysql_query("INSERT INTO summary_td (customer_id, month, Income, Savings, Revolving_Expenses, Utilities, Services, Luxuries, Charities, month_id) VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."',
'".addslashes($data[3])."',
'".addslashes($data[4])."',
'".addslashes($data[5])."',
'".addslashes($data[6])."',
'".addslashes($data[7])."',
'".addslashes($data[8])."',
'".addslashes($data[9])."'
)
");
}
} while ($data = fgetcsv($handle,1000,",","'"));
//redirect
header('Location: import.php?success=1'); die;
}
?>
CSV Data: CSV 数据:
1,January,5000,899,899,899,899,899,899,1 1,February,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2 1,March,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3 1,April,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4 1,May,NULL,NULL,NULL,NULL,NULL,NULL,NULL,5 1,June,NULL,NULL,NULL,NULL,NULL,NULL,NULL,6 1,July,NULL,NULL,NULL,NULL,NULL,NULL,NULL,7 1,August,NULL,NULL,NULL,NULL,NULL,NULL,NULL,8 1,September,NULL,NULL,NULL,NULL,NULL,NULL,NULL,9 1,October,NULL,NULL,NULL,NULL,NULL,NULL,NULL,10 1,November,NULL,NULL,NULL,NULL,NULL,NULL,NULL,11 1,December,NULL,NULL,NULL,NULL,NULL,NULL,NULL,12 1,January,5000,899,899,899,899,899,899,1 1,February,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2 1,March,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3 1,April ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4 1,May,NULL,NULL,NULL,NULL,NULL,NULL,NULL,5 1,June,NULL,NULL,NULL,NULL,NULL,NULL ,NULL,6 1,July,NULL,NULL,NULL,NULL,NULL,NULL,NULL,7 1,August,NULL,NULL,NULL,NULL,NULL,NULL,NULL,8 1,September,NULL,NULL, NULL,NULL,NULL,NULL,NULL,9 1,October,NULL,NULL,NULL,NULL,NULL,NULL,NULL,10 1,November,NULL,NULL,NULL,NULL,NULL,NULL,NULL,11 1 ,十二月,NULL,NULL,NULL,NULL,NULL,NULL,NULL,12
This works fine for me -这对我来说很好用 -
function upload(){
ini_set('auto_detect_line_endings',TRUE);
if (($handle = fopen($_FILES['userfile']['tmp_name'], "r")) !== FALSE) {
$firstRow = true;
while (($data = fgetcsv($handle, 4096, ",",'"')) !== FALSE)
{
$num = count($data);
$data1 = array(
'name' => $data[0],
'nric' => $data[1],
'email' => $data[2],
'address' => $data[3] ,
'postal' => $data[4],
'mobile_country_code' => $data[5],
'mobile' => $data[6],
'gender' => $data[7],
'country' => $data[8],
'nationality' => $data[9],
'dob' => $dob,
'notes' => $data[11],
'newsletter' => $data[12],
'delete' => $data[13]
);
//echo "<pre/>";print_r($data) ;exit();
$this->db->insert('members', $data1);
$member_id = $this->db->insert_id();
}
//echo "<pre/>";print_r($data) ;exit();
fclose($handle);
}
ini_set('auto_detect_line_endings',FALSE);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.