2011-09-14 301 views
0

我用下面的函数CSV文件导入到数据库。一切工作正常。但我也想要它也插入$_SESSION['userid']与CSV文件。请帮帮我。谢谢导入CSV文件导入数据库

function csv_file_to_mysql_table($source_file, $target_table, $max_line_length=10000) { 
      if (($handle = fopen("$source_file", "r")) !== FALSE) { 
       $columns = fgetcsv($handle, $max_line_length, ","); 
       foreach ($columns as &$column) { 
        $column = str_replace(".","",$column); 
       } 
       $insert_query_prefix = "INSERT INTO $target_table (".join(",",$columns).")\nVALUES"; 
       while (($data = fgetcsv($handle, $max_line_length, ",")) !== FALSE) { 
        while (count($data)<count($columns)) 
         array_push($data, NULL); 
        $query = "$insert_query_prefix (".join(",",quote_all_array($data)).");"; 
        mysql_query($query); 
       } 
       fclose($handle); 
      } 
     } 

     function quote_all_array($values) { 
      foreach ($values as $key=>$value) 
       if (is_array($value)) 
        $values[$key] = quote_all_array($value); 
       else 
        $values[$key] = quote_all($value); 
      return $values; 
     } 

     function quote_all($value) { 
      if (is_null($value)) 
       return "NULL"; 

      $value = "'" . mysql_real_escape_string($value) . "'"; 
      return $value; 
     } 
     csv_file_to_mysql_table($uploadfile,"import_csv"); 
     echo "file is imported successfully!"; 
    } 

回答

0

我想象这样的事情会工作。在数组加入后只需追加额外的字段。

我不知道你的user_id列叫,我只是认为USER_ID

$insert_query_prefix = "INSERT INTO $target_table (".join(",",$columns).",user_id)\nVALUES"; 

user_ID的值添加到值参数

$query = "$insert_query_prefix (".join(",",quote_all_array($data)).",".$_SESSION['userid'].");"; 
+0

收到错误消息。 '解析错误:语法错误,第28行C:\ wamp \ www \ user_events \ upload_csv.php中出现意外的T_FUNCTION。这是线路号。 28'功能csv_file_to_mysql_table($ SOURCE_FILE,$ target_table,$ MAX_LINE_LENGTH = 10000){' –

+0

我不知道该怎么告诉你。我只是用PHP语法检查器测试了我的更改,一切都很好。如果你重新输入了它所写的内容,你可能需要仔细检查引号,分号等。 – rwilliams

+0

对不起这是我的错。它的工作感谢 –

0

寻找 “Add(添加)” .. 。只需在获取它们后添加列名称,并在数据结束后将数据添加到数组的末尾......应该很简单。

  foreach ($columns as &$column) { 
       $column = str_replace(".","",$column); 
      } 
//ADD HERE 
$columns[] = "userid"; 
      $insert_query_prefix = "INSERT INTO $target_table (".join(",",$columns).")\nVALUES"; 
      while (($data = fgetcsv($handle, $max_line_length, ",")) !== FALSE) { 
       while (count($data)<count($columns)) 
        array_push($data, NULL); 
//ADD HERE 
$data[] = $_SESSION['userid'] 

       $query = "$insert_query_prefix (".join(",",quote_all_array($data)).");"; 
       mysql_query($query);