PHPを書いていて、データベースであるMySQLへデータをインポートするにはどうすればいいんだろ??
と思いgoogle先生に聞いてみるとどんぴしゃで素敵なページを発見!
【PHP】 CSVをいい感じにインポートする方法を紹介します
CSVがなんなのかから説明が始まり、非常にわかりやすい解説でノンプログラマーな私でも理解できる内容ですぐにコードをコピペしてカスタマイズ可能だったのですが
なぜか動かず・・・・・。
いろいろチェックした結果、内容が古くなってしまっているからかいくつか変更するときちんと動きましたので
今後同じページを見て作業をされる方もいるかと思いつつ
備忘録がてら、修正した点をご紹介いたします。
①setFlags
この部分は
$file->setFlags(SplFileObject::READ_CSV);
↓
$file->setFlags(SplFileObject::READ_CSV | SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE);
これじゃないとNULLが帰ってきてエラーになる。
②$valuesじゃなくて$ins_values
最後にMySQLへデータを送るところで変数が違っているのでアップロードしたデータが反映されれず、どうしてただろうと思っていたら。。。
$sql_insert = “INSERT INTO テーブル名 ( カラム01, カラム02, カラム03 ) VALUES ” . $values;← (正しくは$ins_values)
mysql_query( $sql_insert, $connect );
mysql_query( $sql_insert, $connect );
$valuesとかかれていたところを$ins_values
に変えると無事きちんと動作しました。
③CSVダウンロード解説はこちらがオススメ!
CSVアップロードするということはダウンロード機能も必須!
と考える人が多いかと思いますし、私もアップロード・ダウンロード機能両方つけて作成しました。
そして、実際に解説ページとしては以下の2つがとてもわかりやすかたったので、シェアさせていただきます。
http://raharu0425.hatenablog.com/entry/20090802/12492
https://php.programmer-reference.com/php-mysql-csv-download/
このページを参考にすれば、
PHPを使ってCSV形式のファイルをアップロードしてMySQLへ反映させたり、逆にMySQLのデータをCSVでダウンロードするというアップロードもダウンロードもどちらもできるようになるかと思います。
PHPを使ってCSV形式のファイルをアップロードしてMySQLへ反映させたり、逆にMySQLのデータをCSVでダウンロードするというアップロードもダウンロードもどちらもできるようになるかと思います。
プログラムを書いているとわからないことも
多いものでいろいろ調べるのですが、私のようなノンプログラマな人だと紹介されているコードが間違っていてもすぐに発見できないこともありますし、同じように動かなくて困っている方がこちらをみて動くようにできればいいなと思います。
よろしければぜひ、SNSなどでシェアしてくださいませ♪