PHPでCSVファイルをUTF8に変換したい
ブラウザからCSVファイルをアップロードし、MySQLのデータベースにインポートするプログラムをPHPで作成しています。
エクセルで作成したCSVファイルはsjis形式のため、UTF8に変換してからMySQLにインポートしてあげると文字化けせずにインポートする事が出来るのですが、毎回手動でUTF8に変換するのは面倒ですのでファイルをアップロードしたタイミングで自動的にsjis形式からUTF8に変換したいと考えております。
ファイルのアップロードまでは動作していますが、CSVファイルをsjisからUTF-8に変換するにはどうすればよいでしょうか?
どなたかご教示いただければ幸いです。以下は作成中のコードです。
index.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>sample</title>
</head>
<body>
<form action="read.php" method="POST" enctype="multipart/form-data">
ファイル:<br>
<input type="file" name="upfile" size="30"><br>
<br>
<input type="submit" value="アップロード">
</form>
</body>
</html>
read.php
<?php
//csvファイルのアップロード
if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) {
//「files」という名前のフォルダを同じ階層に設置。ここにCSVファイルをアップロード
if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) {
chmod("files/" . $_FILES["upfile"]["name"], 0644);
//fileパス
$file = "files/" .$_FILES["upfile"]["name"];
//DB接続
$sv = "localhost";
$dbname = "shop";
$user = "user";
$pass = "password";
$conn = mysql_connect($sv, $user, $pass) or die("コネクトエラー");
mysql_select_db($dbname) or die("DBセレクトエラー");
mysql_query("SET NAMES utf8");
//CSVデータの取り込み
$sql = "LOAD DATA LOCAL INFILE '$file' INTO TABLE food";
$sql .= " FIELDS";
$sql .= " TERMINATED BY ',' "; //TERMINATED BY 区切り文字
$sql .= " ENCLOSED BY '\"' "; //ENCLOSED BY 囲み文字
$sql .= " LINES TERMINATED BY '\r\n' ";
$sql .= " IGNORE 1 LINES";
$result = mysql_query($sql, $conn);
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $sql;
die($message);
}
echo "インポートが完了しました!";
//失敗したとき
} else {
echo "ファイルをアップロードできません。";
}
} else {
echo "ファイルが選択されていません。";
}
?>
CSVファイル
"No","food","price"
"1","うどん","100"
"2","カレー","300"
"3","パスタ","500"
MySQLテーブル
CREATE TABLE IF NOT EXISTS `food` (
`No` int(11) NOT NULL,
`food` varchar(50) NOT NULL,
`price` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
使用中のバージョン
PHP/5.4.19
Apache/2.4.4
XAMPP v3.2.1
素人の質問で凝縮ですが、よろしくお願いいたします。
補足
ご回答ありがとうございます。 phpについて何にもわかってないです。。。 ご提案いただいたようなPHPスクリプトを作るのに 参考になるようなURLをご存知でしょうか? そのまま、真似できるようなのがあるとありがたいのですが。 よろしくお願いいたします。