2013-12-10 37 views
0

我想從一個CSV文件中的數據插入到我的MySQL數據庫和PHP到MySQL。但我不知道我做錯了什麼。插入數據與PHP

這是我的PHP代碼

if ($_FILES[csv][size] > 0){ 
$csv_file = $_FILES[csv][tmp_name]; // Name of your CSV file 
$csvfile = fopen($csv_file, 'r'); 
$theData = fgets($csvfile); 


$i = 0; 
while (!feof($csvfile)) { 
$csv_data[] = fgets($csvfile, 1024); 
$csv_array = explode(",", $csv_data[$i]); 

$insert_csv = array(); 
$insert_csv['id'] = $csv_array[0]; 
$insert_csv['name'] = $csv_array[1]; 
$insert_csv['email'] = $csv_array[2]; 

if(!empty($insert_csv['email'])){ 
$query = "INSERT INTO contacts(id,name,email) 
VALUES('','".$insert_csv['name']."','".$insert_csv['email']."')"; 
$n=mysqli_query($database->connection,$query); 
} 

$i++; 
} 

fclose($csvfile); 

} 

這是我的CSV模樣。

id---- name ------- email 

1 ---- [email protected] 

2 ---- user2 --------blah 

3------ user 3 ------ blah 

當我運行這段代碼我的MySQL結果

電子郵件表= ## 0.00 「TL」)$#恩

在我的名字表= ##也是0.00 「TL」) $#;

什麼我錯了嗎?

+0

不知道,如果你需要錯過qoutes在php中執行所有循環和操作 - 爲什麼不使用'LOAD DATA INFILE'的本地功能? http://dev.mysql.com/doc/refman/5.1/en/load-data.html然後,您可以測試該語句上的數據庫isntance首先要確保它的工作原理 –

+0

@hans:是您的CSV文件格式? –

+0

不是真的我有一個excel文件。 – hans

回答

0

首先,我想你應該刪除第一個

$data = fgetcsv($getfile, 1000, ","); 

線,while循環的外...

1

你可能想使用MySQL做的整個裝載過程LOAD DATA INFILE聲明。

if($_FILES['csv']['error'] === UPLOAD_ERR_OK && $_FILES['csv']['size'] > 0) { 
    $query = "LOAD DATA INFILE '" . $_FILES['csv']['tmp_name'] 
    . "' INTO TABLE contacts FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' (id, name, email);"; 

    if(!mysqli_query($query)){ 
     die('Oops! Something went wrong!'); 
    } 
} 

如果需要,你可以調整負荷參數(FIELDS TERMINATED BYENCLOSED BYLINES TERMINATED BY)。

確實會注意,如果你使用這種方法臨時文件需要被存儲在一個地方,由MySQL服務器(如/tmp)的訪問。

0

請嘗試下面的這個例子,它應該爲你工作,你想要

我覺得你在「

$query = "INSERT INTO contacts(id,name,email) 
VALUES('".$col1."','".$col2."','".$col3."')"; 

<?php 

    $csv_file = 'C:\wamp\www\stockmarket\test.csv'; // Name of your CSV file with path 
    if (($getfile = fopen($csv_file, "r")) !== FALSE) { 
      $data = fgetcsv($getfile, 1000, ","); 
      while (($data = fgetcsv($getfile, 1000, ",")) !== FALSE) { 
      $num = count($data); 
      for ($c=0; $c < $num; $c++) { 
       $result = $data; 
       $str = implode(",", $result); 
       $slice = explode(",", $str); 
       $col1 = $slice[0]; 
       $col2 = $slice[1]; 
       $col3 = $slice[2]; 

    // SQL Query to insert data into DataBase 

    $query = "INSERT INTO contacts(id,name,email) 
    VALUES('".$col1."','".$col2."','".$col3."')"; 

    $s=mysql_query($query, $connect); 
     } 
     } 
     } 
    ?>