|
 |
 |
データベースにアップロード
サンプルと機能
ローカルにあるファイルを、データベースのテーブルにアップロードすることができます。
→ サンプル(実際にアップロードするわけにはいかないため画像で)

ファイルの上限値や上書きの可否を設定することも可能です。
サンプルスクリプト
緑の文字が変更箇所で、赤い文字が対応するPHPです。
<!-- -->内または//以下はコメントです。削除しても影響ありません。
必要な箇所をコピー&貼り付けして編集してください。
→ 呼び出すファイル
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM method="POST" action="upload.php" enctype="multipart/form-data">
<!-- データの最大サイズ -->
<INPUT type="hidden" name="max_file_size" value="1000000">
アップロードするファイルを選択してください。<BR>
<BR>
<INPUT name="fl" type="file" size="50"><BR>
<INPUT type="checkbox" name="frb" value="true" checked>上書きしない<BR><BR>
<INPUT type="submit" value="アップロード">
</FORM>
</BODY>
</HTML> |
→ upload.php
<?php header("Content-Type:text/html;charset=SHIFT_JIS"); ?>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
$srv = "localhost"; // サーバー名
$id = "xxxxx"; // ユーザーID
$passwd = "xxxxx"; // パスワード
$dbn = "sample"; // データベース名
$tn = "sample1"; // テーブル名
// キー
$key[0] = "id";
$key[1] = "title";
$key[2] = "comment";
?>
<TABLE border="1">
<TR><TH colspan="3">入力データ</TH><TH>エラーメッセージ</TH></TR>
<?php
$db=mysql_connect($srv,$id,$passwd);
mysql_select_db($dbn,$db);
$file=fopen($_FILES['fl']['tmp_name'],"r");
while($dat=fgetcsv($file,1000,",")){
$sql=""; if($_POST['frb'] == "true") {
// キーとデータを増やしたら、ここにも追加します。
$sql="INSERT INTO ".$tn."(".$key[0].",".$key[1].",".$key[2].")
VALUES('".$dat[0]."','".$dat[1]."','".$dat[2]."')";
} else {
// キーとデータを増やしたら、ここにも追加します。
$sql="UPDATE ".$tn." SET ".$key[1]."='".$dat[1]."',".$key[2]."=".$dat[2]."
WHERE ".$key[0]."='".$dat[0]."'";
}
// EUCからSHIFT_JISに変換
for($i=0; $i<count($dat); $i++) {
$dat[$i] = mb_convert_encoding($dat[$i],"SJIS","EUC-JP");
}
mysql_query($sql,$db);
// キーとデータを増やしたら、ここにも追加します。
if(mysql_errno() == 0) {
print("<TR><TD>".$dat[0]."</TD>");
print("<TD>".$dat[1]."</TD><TD>".$dat[2]."</TD>");
print("<TD>正常終了</TD></TR>");
} else {
print("<TR><TD>".$dat[0]."</TD>");
print("<TD>".$dat[1]."</TD><TD>".$dat[2]."</TD>");
print("<TD><FONT color=red>".mysql_error()."</FONT></TD></TR>");
}
}
fclose($file);
mysql_close($db);
?>
</TABLE>
</BODY>
</HTML> |
解説・注意点など
サンプルで用いたアップロードファイルは以下のとおりです。 1,sample1,"これはサンプルデータです"
8,sample2,"本当にサンプルデータです"
9,sample3,"絶対サンプルデータです"
10,sample4,"きっとサンプルデータです"
5,sample5,"ほのかにサンプルデータです"
また、サンプルに用いたSQLは以下のとおりです。
CREATE TABLE sample1 (
id int(10) NOT NULL,
title char(20) default NULL,
comment char(50) default NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
INSERT INTO sample1 VALUES ('1','sample1','これはサンプルデータです');
INSERT INTO sample1 VALUES ('2','sample2','本当にサンプルデータです');
INSERT INTO sample1 VALUES ('3','sample3','絶対サンプルデータです');
INSERT INTO sample1 VALUES ('4','sample4','きっとサンプルデータです');
INSERT INTO sample1 VALUES ('5','sample5','ほのかにサンプルデータです');
INSERT INTO sample1 VALUES ('6','sample6','なんとなくサンプルデータです');
INSERT INTO sample1 VALUES ('7','sample7','サンプルデータだったらいいなぁ');
← PHP/データベースに戻る
|
 |
|