画像ファイルや 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>
このプログラムを実行すると、単純な HTML フォームが表示されます。[参照] をクリックしてファイルを選択し、[送信] をクリックします。
ファイルが 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 を渡す必要があります。
例: データベース内のファイルの ID は 2 です。次のように呼び出すことができます:
getdata.php3?id=2
画像をデータベースに保存すると、写真のように呼び出すことができます。
例: データベース内の画像ファイルの ID は 3 です。次のように呼び出すことができます。
1MBを超えるファイルを保存する方法:
1MB を超えるファイルを保存したい場合は、プログラム、PHP 設定、SQL 設定に多くの変更を加える必要があります。
次のヒントは、24MB 未満のファイルを保存するのに役立ちます。
1. store.php3 を変更し、MAX_FILE_SIZE の値を 24000000 に変更します。
2. PHP 設定を変更します。通常の状況では、PHP は 2MB 未満のファイルのみを許可します。(php.ini 内の) max_filesize の値を 24000000 に変更する必要があります。
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 に変更できます
上記は、Windows セキュリティ警告をオフにする方法を詳しく説明しました: - Windows セキュリティ警告をオフにする方法を含む、画像をデータベースに保存する方法。PHP チュートリアルに興味がある友人に役立つことを願っています。