Web サイトをデザインおよび作成するプロセスでは、画像をファイルとして保存するよりもデータベースに保存する方が便利な場合があります。 MySQL との黄金の組み合わせにより、上記の機能を簡単に実現できます。この記事では、MySQL データベースに写真を保存する方法と、データベース内の写真を表示する方法を読者に紹介します。
データベースをセットアップする
データベースで通常使用するテキスト型または整数型のフィールドと、画像の保存に使用する必要があるフィールドの違いは、保存する必要があるデータの量にあります。 MySQL データベースは大量のデータを保存するために特別なフィールドを使用し、データ型は BLOB です。
MySQL データベースは BLOB を次のように定義します: BLOB データ型は、可変量のデータを格納できる大きなバイナリ オブジェクトです。 BLOB には、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB の 4 種類があり、それぞれ保存できる最大データ長が異なります。
使用する必要があるデータ型を導入した後、次のステートメントを使用して、画像を保存するためのデータ テーブルを作成できます。
CREATE TABLE 画像 (PicNum int NOT NULL AUTO_INCREMENT PRIMARY KEY、画像 BLOB);
アップロード スクリプト edu-cn.com を作成する
ファイルのアップロード方法についてはここでは紹介しませんので、興味のある方は「Web Page Tao Bar」の関連記事を参照してください。ここでは、アップロードされたファイルを受信して MySQL データベースに保存する方法を主に説明します。具体的なスクリプト コードは次のとおりです。ファイル アップロード ドメインの名前は Picture であると仮定します。
If($Picture != "なし") {
$PSize = ファイルサイズ($Picture);
$mysqlPicture = addedlashes(fread(fopen($Picture, "r"), $PSize));
mysql_connect($host,$username,$password) または die("SQL サーバーに接続できません");
@mysql_select_db($db) または die("データベースを選択できません");
mysql_query("INSERT INTO Images (Image) VALUES '($mysqlPicture')") または die("Can't Perform Query");
} その他 {
echo "写真はアップロードされていません";
}
?>
このようにして、画像をデータベースに正常に保存できます。 MySQL への画像の挿入で問題が発生した場合は、MySQL データベースで許可されている最大パケット サイズを確認できます。設定値が小さすぎる場合は、データベースのエラー ログで対応するレコードが検索されます。
次に、上記のスクリプトプログラムについて簡単に説明します。まず、「If($Picture != "none")」でファイルがアップロードされているかどうかを確認します。次に、addslashes() 関数を使用して、データ形式エラーを回避します。最後に、MySQL に接続し、データベースを選択して画像を挿入します。
www.edu4u.com.cn
写真を見せる
画像をデータベースに保存する方法がわかったら、データベースから画像を取得して HTML ページに表示する方法を検討する必要があります。このプロセスはもう少し複雑です。以下に実装プロセスを紹介します。
画像を表示するには対応するヘッダーを送信する必要があるため、ヘッダーを送信した後は他のヘッダーを送信できないため、一度に 1 つの画像しか表示できないという問題に直面します。
この問題を効果的に解決するために、2 つのファイルを作成しました。このうち、最初のファイルは HTML ページのテンプレートとなり、画像の表示位置を決定します。 2 番目のファイルは、データベースからファイル ストリームを タグの SRC 属性として実際に出力するために使用されます。
最初のファイルの単純な形式は次のようになります:
mysql_connect($host,$username,$password) または die("SQL サーバーに接続できません");
@mysql_select_db($db) または die("データベースを選択できません");
$result=mysql_query("SELECT * FROM Images") または die("Can't Perform Query");
While($row=mysql_fetch_object($result)) {
echo "";
}
?>