私は初心者ですから、PHPとMySQLデータベースで画像を扱うようになりました。ここに問題があります:データベースに接続した後、MySQLデータベースに格納された画像を表示できません
イメージはBLOBフィールドのデータベーステーブルに正常に保存されています。私はそれをファイル(new.jpg)に書き込み、画像を表示することができます。今ここにtwsiterがあります - 私はWebページ上の画像を表示するために作成したimagedisplay.phpファイルは、フォルダディレクトリからnew.jpgファイルを読むことができます。しかし、データベースに直接接続してデータベースから画像データを直接取得すると(コードにnew.jpgを含める必要がないように)、「画像にはエラーがあります.....」というエラーが表示されます「
画像をアップロードするために使用されるコードは
<?php
require_once 'login.php'; //contains the classes for connecting to databases
$dbh=new DB_Mysql; //executing queries
$func=new DB_Mysql_code_functions;
session_start();
if(isset($_SESSION['username']))
{
echo<<<_END
<form method="post" action="admin_social_activities.php" enctype="multipart/form-data">
<table width="990">
<tbody>
<tr><td>Select an image file to be uploaded:</td></tr>
<tr><td><input type="submit" value="UPLOAD" /></td></tr>
</tbody>
</table>
</form>
_END;
if(isset($_FILES['imagefile']['tmp_name']))
{
$imagefile=$_FILES['imagefile']['tmp_name'];
$image_size=$_FILES['imagefile']['size'];
$image_name=addslashes($_FILES['imagefile']['name']);
$image_data = addslashes(file_get_contents($imagefile));
$image_array=getimagesize($imagefile);
$image_type=$image_array['mime'];
$image_height=$image_array[1];
$image_width=$image_array[0];
$maxfilesize=2000000;
if($maxfilesize<$image_size)
{
echo "Please upload a smaller image. The size of the image is too large.";
}
else
{
$query="INSERT INTO allery(image_name,image_type,image,image_size) VALUES ('".$image_name."','".$image_type."','".$image_data."','".$image_size."')";
$stmt=$dbh->execute($query);
$lastimageid=mysql_insert_id();
$query="select * from gallery where mage_id=".$lastimageid;
$stmt=$dbh->execute($query);
$row=$stmt->fetch_row();
if(file_exists("new.jpg"))
unlink("new.jpg");
$handle=fopen("new.jpg",'wb');
fwrite($handle,$row[3]);
fclose($handle);
echo "<p>You uploaded this image</p><img src='imagedisplay.php' height=".($image_height/2)." width=".($image_width/2).">";
}
}
}
とimagedisplay.phpファイルの現在のコードは以下であり、それは細かい画像を表示:
<?php
header("Content-type: image/jpeg");
$image=imagecreatefromjpeg("new.jpg");
imagejpeg($image);
imagedestroy($image);
?>
それとして、画像を表示停止しますすぐに私はimagedisplay.phpに接続クエリを含める
<?php
require_once 'login.php';
$dbh= new DB_Mysql();
$func=new DB_Mysql_code_functions;
header("Content-type: image/jpeg");
$image=imagecreatefromjpeg("new.jpg");
imagejpeg($image);
imagedestroy($image);
?>
私は日以来、この上で立ち往生メートル... ..
OKを助ける...ので、私は私のアプローチを変更してください...今、クエリ文字列にimage_idはを渡すIMとimagedisplay.phpイメージタグを含む: 何らかのフォーマット上の問題のため、ここにコードの先頭部分を書くことができませんのでご注意ください。 headセクションは、Dreamweaverで標準的にフォーマットされたhtmlセクションです。
<body>
<div class="page shadow-round">
<div id="header">
<div id="logo">
<script type="text/javascript" src="../js/header.js"></script>
</div>
</div>
<div id="menu">
<script type="text/javascript" src="../js/navmenu.js"></script>
<script type="text/javascript">
</script>
</div>
<div class="content overflow" style="height:900px;">
<?php
require_once 'login.php'; //contains the classes for connecting to databases
$dbh=new DB_Mysql; //executing queries
$func=new DB_Mysql_code_functions;
session_start();
if(isset($_SESSION['username']))
{
echo<<<_END
<form method="post" action="admin_social_activities.php" enctype="multipart/form-data">
<table width="990">
<tbody>
<tr><td>Select an image file to be uploaded:</td></tr>
<tr><td><input type="submit" value="UPLOAD" /></td></tr>
</tbody>
</table>
</form>
_END;
if(isset($_FILES['imagefile']['tmp_name']))
{
$imagefile=$_FILES['imagefile']['tmp_name'];
$image_size=$_FILES['imagefile']['size'];
$image_name=addslashes($_FILES['imagefile']['name']);
$image_data = addslashes(file_get_contents($imagefile));
$image_array=getimagesize($imagefile);
$image_type=$image_array['mime'];
$image_height=$image_array[1];
$image_width=$image_array[0];
$maxfilesize=2000000;
if($maxfilesize<$image_size)
{
echo "Please upload a smaller image. The size of the image is too large.";
}
else
{
$query="INSERT INTO gallery(image_name,image_type,image,image_size) VALUES ('".$image_name."','".$image_type."','".$image_data."','".$image_size."')";
$stmt=$dbh->execute($query);
$lastimageid=mysql_insert_id();
echo "<p>You uploaded this image</p>";
echo "<img src='imagedisplay.php?imageid=".$lastimageid."' />";
}
}
}
else
echo "<br/><br/> Your are <span class=\"red\"><b>not Authorized</b></span> to view this page. If you are the Admin, please login with your credentials again. <a href='login_page.php'>Click here to continue</a>";
?>
</div>
</body>
</html>
ここで問題は、コントロールが決してimagedisplay.phpに移動しないことです。 imagedisplay.phpを完全に参照することができません。
imagedisplay.phpのためのコードは以下の通りです:
<?php
require_once 'login.php';
$dbh= new DB_Mysql();
$func=new DB_Mysql_code_functions;
$id=$_GET['imageid'];
$query="SELECT * FROM gallery where image_id=".$id;
$stmt=$dbh->execute($query);
$row=$stmt->fetch_row();
$imagedata=$row[3];
header("Content-type:image/jpeg");
echo $imagedata;
?>
私は引用符ですべての順列組み合わせを試してみましたが、コントロールはファイルに入ったかどうかを確認するためにecho文を試してみました....しかし、それはしていません。..私は理由を理解していません...助けてください...
imagedisplay.phpの2番目の例は、phpタグがないことを除いて、異なっているようではありません。 – Leif
最後のコードには、あなたが話している質問が含まれていないため、見つからないものがあります。 –
'$ dbh =新しいDB_Mysql(); $ func = new DB_Mysql_code_functions; ' - ここでエラー処理はどのように機能しますか?スクリプトは、データベースへの接続が確立されているかどうかをどのように判断できますか? – VolkerK