【PHP】CSVファイルをMYSQLにインポートする方法を頑張ってみた笑

ディレクトリのイメージ

ドキュメントルート

└upload.php

└file/

まずCSVファイルをサーバーに設置

$this_path = dirname(__FILE__);
$uploaddir = $this_path.'/file/';
if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) {
    if (move_uploaded_file ($_FILES["upfile"]["tmp_name"], $uploaddir . "data.csv")) {
        chmod($uploaddir . "data.csv", 0644);
        echo  "保存完了";
    } else {
        echo  "失敗";
    }
} else {
    echo "ファイルが選択されていません。";
}

csvデータを配列に格納する。

        $data = fopen("./file/data.csv", "r");
        $hoge_arr = array(); 
        $data_arr = array();

        while($line = fgetcsv($data)){
            // 文字化け対策 はしご高など特殊旧漢字の文字化けを防止する
            mb_convert_variables("UTF-8", "SJIS-win", $line);
// 読み込んだ結果を格納 $hoge_arr[] = $line; } fclose($data); 

前処理

function cast($data){
   $result = "'".$data."'";
   return $result;
}

配列を詰め込む

for ($i = 0; $i < $max; $i++) {
   $data_arr["test"] = self::cast($hoge_arr[$i][0]);
   $data_arr["data"] = self::cast($hoge_arr[$i][1]);
}

mysqlにインサート

$sql = "INSERT INTO test_tbl (
         `test`,
         `data`
        ) VALUES (
            {$data_arr["test"]},
            {$data_arr["data"]},
        )";

$stmt = $pdo -> prepare($sql);
$stmt -> execute();
  • Pocket
  • LINEで送る
  • このエントリーをはてなブックマークに追加

Menu

HOME

TOP