2016-05-13 13 views
1

他のすべての情報はウェブサイト上にありますが、BLOB画像の画像ではありません。データベースは画像を保持しているので、保存されている画像が表示されます。すべての評価!画像はデータベースから取り込まれていません

GetImage.php

<?php 
include "connection.php"; 

$ID = $_GET["ID"]; 

$SQLCommand = "SELECT * FROM products WHERE ID = '$ID'"; 
$Result = mysqli_query($con, $SQLCommand); 

$row = mysqli_fetch_assoc($Result); 

header("Content-type:" . $row["Name"]); 
echo $row["Image"]; 

?> 

shop.php

<?php 
include "connection.php"; 

$SQLCommand = "SELECT * FROM products"; 
$Result = mysqli_query($con, $SQLCommand); 

while($row = mysqli_fetch_assoc($Result)){ 
echo "<p id='p1'>" . $row["Name"] . 
    "<br></p><p id='p3'>£" . $row["Price"] . 
       "<br><br><img src=GetImage.php?ID=" . $row["ID"] . "   width=10%>" . 
     "<br><a href=productdetails.php?ID=" . $row["ID"] . ">Details</a></p>". 
     "<p id='p2'><a href=BasketAdd.php?ID=" . $row["ID"] . ">Add to  Basket</a><br><br>"; 
} 
?> 

InsertImageform

<html> 
<body> 
<form action="UploadFile.php" method="post" 

ENCTYPE = "マルチパート/フォームデータ">

Name: <input type="text" name="name" id="name"><p> 
Description: <input type="text" name="description" id="description"><p> 
Price: <input type="text" name="price" id="price"><p> 
Protein: <input type="text" name="protein" id="protein"><p> 
Type: <input type="text" name="type" id="type"><p> 

Filename: <input type="file" name="file" id="file"><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 
</body> 
</html> 
+0

のために一緒にすべてを入れて** WARNING **:あなたはパラメータ化[使用する必要がありますmysqli' '使用クエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param'](http://php.net/manual/en/mysqli-stmt.bind- param.php)を使用してユーザーデータをクエリに追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'や' $ _GET'データを直接クエリに入れないでください。誰かがあなたのミスを悪用しようとすると、非常に危険です。 – tadman

答えて

0

代わりに使用することができ、

<?php 
    include "connection.php"; 

    $SQLCommand = "SELECT * FROM products"; 
    $Result = mysqli_query($con, $SQLCommand); 

    while($row = mysqli_fetch_assoc($Result)){ 
    echo "<p id='p1'>" . $row["Name"] . 
     "<br></p><p id='p3'>£" . $row["Price"] . 
        "<br><br><img src=" . base64_encode($row['image']) . "   width=10%>" . 
      "<br><a href=productdetails.php?ID=" . $row["ID"] . ">Details</a></p>". 
      "<p id='p2'><a href=BasketAdd.php?ID=" . $row["ID"] . ">Add to  Basket</a><br><br>"; 
    } 
?> 

あなたはBLOBの画像を読み取るbase64_encode()機能を使用する必要があります。

+0

こんにちは@thewebmstrは助けようとしてくれたことに感謝していません – user6107183

+0

はあなたのイメージの列はBLOB形式ですか? – keziah

+0

はいthats correct – user6107183

0

データベース内の画像に関する問題は、一般に、画像がデータベースにどのように格納されたかに関係しています。

イメージはバイナリとして保存できますが、base64として保存すると問題はありません。

私が見る必要があるのは、データベースにイメージを保存するコードです。テーブル内のフィールドの画像を持っているでしょう

UPDATE `table` SET `image`='$img' WHERE ... 


は、 "画像"

<input type="file" name="image"> 

その後

if(is_uploaded_file($_FILES['image']['tmp_name']) || !($_FILES['image']['error'] !== UPLOAD_ERR_OK)){ 
    $img = base64_encode($_FILES['image']); 
    $sql = "INSERT INTO `images`(`image`) VALUES('$img')"; 
    ... 
} 

やUPDATEなどの名前でファイル入力を考えますタイプ "TEXT"

しかし、まだ有効ではありません...

画像の寸法と種類を知る必要があります。

if(is_uploaded_file($_FILES['image1']['tmp_name']) || !($_FILES['image1']['error'] !== UPLOAD_ERR_OK)){ 
    $save = false; 
    switch(strtolower($_FILES['image1']['type'])){ 
    case 'image/jpeg': 
    $image = @imagecreatefromjpeg($_FILES['image']['tmp_name']); 
    if ($image !== false){$save = true;break;} 
    case 'image/png': 
    $image = @imagecreatefrompng($_FILES['image']['tmp_name']); 
    if ($image !== false){$save = true;break;} 
    case 'image/gif': 
    $image = @imagecreatefromgif($_FILES['image']['tmp_name']); 
    if ($image !== false){$save = true;break;} 
    default: 
    $img = @getimagesize($_FILES['image']['tmp_name']); 
    switch(strtolower($img['mime'])){ 
    case 'image/jpeg': 
     $image = @imagecreatefromjpeg($_FILES['image']['tmp_name']); 
     $type = 'jpg'; 
     if ($image !== false){$save = true;break;} 
    case 'image/png': 
     $image = @imagecreatefrompng($_FILES['image']['tmp_name']); 
     $type = 'png'; 
     if ($image !== false){$save = true;break;} 
    case 'image/gif': 
     $image = @imagecreatefromgif($_FILES['image']['tmp_name']); 
     $type = 'gif'; 
     if ($image !== false){$save = true;break;} 
    default: 
     $filename = $_FILES['image']['name']; 
     $ext = substr($filename,-3); 
     switch(strtolower($ext)){ 
     case 'jpg': 
     $image = @imagecreatefromjpeg($_FILES['image']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
     case 'gif': 
     $image = @imagecreatefromgif($_FILES['image']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
     case 'png': 
     $image = @imagecreatefrompng($_FILES['image']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
     default: 
     $image = @imagecreatefromjpeg($_FILES['image']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
     $image = @imagecreatefrompng($_FILES['image']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
     $image = @imagecreatefromgif($_FILES['image']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
     } 
    } 
    } 
} 

取得の幅と高さ

$width = imagesx($image); 
$height = imagesy($image); 
$base64 = base64_encode($image); 

HTML <img>

$img = "<img width=\"$width \" height=\"$height\" src=\"data:image/$type;base64,$base64\" alt =\"image\"/>"; 
+0

最初の投稿に画像を追加しました – user6107183

+0

テーブルをINSERTまたはUPDATEするためのSQL。表示されるほど簡単ではありません。誰かが画像ではないファイルをアップロードするとどうなりますか?そのタイプについてどうですか?ファイルの拡張子が間違っていたり、HTTP MIMEタイプが間違っている可能性がありますが、jpg、gif、またはpngの場合は、このルーチンで正しく取得されます。 '$ save'がfalseならば、型を知る必要があります。base64を使うときは、' data:image/$ type; base64、 ' – Misunderstood

関連する問題