2011-09-14 15 views
0

次の関数を使用して、csvファイルをdbにインポートします。すべて正常に動作しています。しかし、私はまた、そのCSVファイルと$_SESSION['userid']を挿入したいです。私を助けてください。ありがとう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の列が呼ばれるかわからない、私はちょうど "HERE ADD" の値を引数に

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

エラーメッセージが表示されます。 '構文解析エラー:構文エラーです。C:\ wamp \ www \ user_events \ upload_csv.phpの28行目に予期しないT_FUNCTIONがあります。これは行番号です。 28 'function csv_file_to_mysql_table($ source_file、$ target_table、$ max_line_length = 10000){' –

+0

あなたに何を伝えるべきかわかりません。私はちょうどphp構文チェッカーで書かれたように私の変更をテストし、すべてがうまくいきます。あなたが書き込んだ内容を再入力した場合は、引用符、セミコロンなどを二重にチェックしたいかもしれません。 – rwilliams

+0

申し訳ありません。そのおかげさまで –

0

ルックをUSER_ID値を追加

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

user_idを想定し...あなたがそれらを手に入れた後で列名をタックして、それが構築されたら配列の最後にデータを追加するだけです。

  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); 
関連する問題