画像ファイルや HTML ファイルなどのバイナリ データを MySQL データベースに直接保存したい場合は、この記事が最適です。 HTML フォームを介してこれらのファイルを保存する方法と、これらのファイルにアクセスして使用する方法を説明します。
この記事の概要:
。 mysql
で新しいデータベースを作成します。ファイルを保存する方法のサンプルプログラム
。ファイルにアクセスする方法のプログラム例
mysql で新しいデータベースを作成する
まず、mysql で新しいデータベースを作成する必要があります。バイナリ ファイルはこのデータベースに保存されます。この例では、データベース
を作成するには、次の手順を実行する必要があります:
。 MySql コントローラー
を入力します。 「データベース binary_data を作成する
」コマンドを入力します。コマンド「use binary_data;」を入力します。コマンド
「CREATE TABLE binary_data (id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY、description CHAR(50)、bin_data LONGBLOB、filename CHAR(50)、filesize CHAR(50)、filetype CHAR(50))」を入力します。 " (改行不可)
事故がなければ、データベースとテーブルが確立されているはずです。
ファイルの保存方法に関するサンプル プログラム この例を使用すると、HTML フォームを通じてファイルをデータベースに転送できます。
<ccid_code>store.php3<?php// store.php3 - by Florian Dittmer <dittmer@gmx.net>?><HTML><HEAD><TITLE>Store binary data into SQL Database</TITLE></HEAD><BODY><?php// 如果提交了表单,代码将被执行:if ($submit) {// 连接到数据库// (你可能需要调整主机名,用户名和密码)MYSQL_CONNECT( "localhost", "root", "password");mysql_select_db( "binary_data");$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));$result=MYSQL_QUERY( "INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) [接上一行:] VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')"); $id= mysql_insert_id(); print "<p>This file has the following Database ID: <b>$id</b>";MYSQL_CLOSE();} else {// 否则显示储存新数据的表单?><form method="post" action=" <?php echo $PHP_SELF; ?>" enctype="multipart/form-data">File Description:<br><input type="text" name="form_description" size="40"><INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000"><br>File to upload/store in database:<br><input type="file" name="form_data" size="40"><p><input type="submit" name="submit" value="submit"></form><?php}?></BODY></HTML></ccid_code>
ファイルが Web サーバーにアップロードされると、プログラムはアップロードしたばかりのファイルの ID を通知しますので、後で使用できるようにこの ID を覚えておいてください。
ファイルへのアクセス方法に関するサンプル プログラム このプログラムを通じて保存したファイルにアクセスできます
<ccid_code><?php// getdata.php3 - by Florian Dittmer <dittmer@gmx.net>// 调用方法: getdata.php3?id=<id>if($id) {// 你可能需要调整主机名,用户名和密码: @MYSQL_CONNECT( "localhost", "root", "password"); @mysql_select_db( "binary_data"); $query = "select bin_data,filetype from binary_data where id=$id"; $result = @MYSQL_QUERY($query); $data = @MYSQL_RESULT($result,0, "bin_data"); $type = @MYSQL_RESULT($result,0, "filetype");Header( "Content-type: $type");echo $data;};?></ccid_code>
例: データベース内のファイルの ID は 2 です。次のように呼び出すことができます:
getdata.php3?id=2
画像をデータベースに保存する場合は、それを呼び出すことができますイメージをそれと呼ぶようなものです。
例: データベース内の画像ファイルの ID は 3 です。次のように呼び出すことができます:
1MB を超えるファイルを保存する方法:
1MB を超えるファイルを保存する場合。 、プログラム、PHP 設定、SQL 設定に多くの変更を加える必要があります。
24MB 未満のファイルを保存するには、次の方法が役立ちます:
1. store.php3 を変更し、MAX_FILE_SIZE の値を 24000000 に変更します。
2. PHP 設定を変更します。通常の状況では、PHP は 2MB 未満のファイルのみを許可します。
3. MYSQL データ パッケージのサイズ制限を削除します。一般に、MYSQL のデータ パッケージは 1 MB 未満です。
4. 次のパラメータを使用して MYSQL を再起動する必要があります。
/usr/local/bin/safe_mysqld -O key_buffer=16M -O table_cache=128 -O sort_buffer= 4M -O record_buffer=1M -O max_allowed_packet=24M
5. それでもエラーが発生する場合:
非常に遅い接続で大きなファイルを保存している場合、PHP が見つかりません。制限時間は30秒です。 max_execution_time (php.ini 内) の値を -1
に変更できます。