phpMyAdmin で MySql データベースを使用するミュージシャン向けのソーシャル ネットワーク タイプの Web サイトに取り組んでいます。ウェブサイトで画像ファイルをデータベースに挿入して表示する際に問題が発生しています (プロフィール写真用)。イメージは LONGBLOB としてデータベースに格納されます。
phpMyAdmin から直接画像を追加すると、問題なく動作します。これは、データベースに従って LONGBLOB データ型に .bin として保存された .jpg です。私のウェブサイトでは、次を使用して完全にクエリおよび表示できます。
<img src="data:image/jpeg;base64,<?php echo base64_encode($memberpicture);?>"
ALT="Member does not have picture" WIDTH=100 HEIGHT=100></img>
ただし、Web サイトのユーザーがプロファイルを作成し、Web サイトの「プロファイルの作成」機能を使用してプロファイル画像として画像を挿入した場合、プロファイルには表示されません。画像の選択コードは次のとおりです。
...
<div class="control-group">
<div class="controls">
<label>Band Picture</label>
<input type="file" name="picture"/>
</div>
</div>
...
そして、挿入コードは次のとおりです。
<?php
session_start();
foreach($_POST AS $key => $val) {
$_SESSION[$key]=$val;
}
mysql_connect("***", "***", "***");
mysql_select_db("musicians");
//...declare other values(name, bio, etc...
$cpicture=$_POST['picture'];
$cpicture = stripslashes($cpicture);
$cpicture = mysql_real_escape_string($cpicture);
$profileInsert="INSERT INTO profile(PROFILE_BANDNAME,PROFILE_GENRE,PROFILE_BANDBIO,
PROFILE_PICTURE,PROFILE_ART,PROFILE_MUSICVIDEO,PROFILE_PLAYLIST)
VALUES ('$cbandname','$cgenre','$cbio','$cpicture','$cart','$cvideo','$cplaylist')"
or die(mysql_error());
データベースを見ると、挿入後にファイルがありますが、非常に小さく (約 16 バイト)、Web サイトまたはデータベースから直接表示することはできません。これは、.bin として保存される .jpg とは対照的に、データベースに従って LONGBLOB データ型に .bin として保存される .bin です。この挿入物に関するヘルプは大歓迎です!