質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

632閲覧

PHPを使ってMySQLへCSVを取り込みたいです

Yt6623

総合スコア4

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/05/03 14:20

編集2021/05/04 02:22

前提・実現したいこと

別システムが作成したCSV形式のログ情報をMySQLへ一括取り込みしたく思います。
PHPを用いて行うと良い、というところまでわかりましたがその後どのようにしたらよいか不明です。
ざっくりとした質問で申し訳ございません。どなたか助けていただきたく。

PHP

1<?php 2error_reporting(E_ALL); 3$conn = mysqli_connect("localhost","InstaSys_user","","csv"); 4 5if(isset($_POST["import"])){ 6 $fileName = $_FILES["file"]["tmp_name"]; 7 8 if($_FILES["file"]["size"]>0){ 9 $file = fopen($fileName, "r"); 10 11 while(($column = fgetcsv($file, 10000, ",")) !== FALSE){ 12 $sqlInsert = "Insert into users values ('" . $column[0] . "','" . $column[1] . "')"; 13 error_reporting(E_ALL); 14 $result = mysqli_query($conn, $sqlInsert); 15 16 if(!empty($result)){ 17 echo "CSV Data Imported into the database"; 18 }else{ 19 echo "Problem in importing CSV"; 20 var_export(mysqli_error($conn));exit; 21 } 22 } 23 } 24} 25 26?> 27 28<form class="form-horizoontal" action="" method="post" name="uploadCsv" enctype="multipart/form-data"> 29 30<div> 31<label>Choose CSV File</label> 32<input type="file" name="file" accept=".csv"> 33<button type="submit" name="import">Import</button> 34 35 36</div> 37 38</form>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

phper.k

2021/05/03 14:32

PHPの実行環境はあるの?
Yt6623

2021/05/03 14:33

phper.kさん MAMP上で作成しております
phper.k

2021/05/03 14:34

書いたところまでのコードを提示してください。
Yt6623

2021/05/03 14:45

phper.kさん 追記しました。 海外のサイトを見ながら作成したものです。 本来、CSVファイルは別システムから受け取る(か、別システムが保存したフォルダへCSVファイルを取りに行くか)ですが、海外のサイトではHTMLフォームからCSVをアップし、それをMySQLへインポートするような形になっておりましたので一旦その形で作成を進めていました。 別システムの仕様がまだ決まらないことと、フォルダへ取りに行くとしても記述の仕方が不明なので一旦作成した次第です。 実行してもProblem in importing CSVと返ってきます。
phper.k

2021/05/03 15:07

var_dump() などのデバッグ用関数鵜を使って、それぞれの変数が意図した値になっているかなどを確認しましょう。
m.ts10806

2021/05/03 20:22

>MAMP上で それならphpMyAdminのインポート機能なりコマンドでのインポートでいいのでは。列がきちんとテーブル定義とそろってるなら自前で組む必要ないですよ。
gpsoft

2021/05/04 01:46

試してみましたが、問題なくINSERTに成功しました。 コード自体は、それなりに動いているみたいなので、elseのところに下記の1行を追記して、失敗原因を表示してみることをオススメします。 var_export(mysqli_error($conn));exit;
Yt6623

2021/05/04 01:49

gpsoftさん CSVNULLと出ました CSVの中身がNULLということでしょうか。中身を見るとちゃんと文字列が入っています。
gpsoft

2021/05/04 02:18

たぶん、mysqli_connect()に失敗してますね。 mysqli_connect()する前に、下記の1行を追記してリトライしてみてください。 error_reporting(E_ALL); で、画面に表示された内容を、質問文に追記していただけますか? ※個人情報とかは伏せ字にしてくださいね。
Yt6623

2021/05/04 02:23

gpsoftさん CSVNULLからかわりません。 一応、上記1文を追記したコードを質問文へ貼り直しました。
gpsoft

2021/05/04 02:32

うーん、困ったな。 念のため、mysqli_connect()の直後に3行追加してみてもらえます? if ( $conn === false ) echo mysqli_connect_error(); else echo '接続成功'; echo '<br>';
Yt6623

2021/05/04 02:34

gpsoftさん 下記のような文章が出ました Access denied for user 'InstaSys_user'@'localhost' (using password: NO) Problem in importing CSVNULL
gpsoft

2021/05/04 02:44

InstaSys_userは、パスワード無しではリモート接続できないアカウントってことですね。このエラーメッセージでググったら解決策が見つかると思います。ガンバ!
Yt6623

2021/05/04 02:46

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問