2016-05-13 10 views
1

Alle anderen Informationen, die in der Datenbank gespeichert werden, sind auf der Website nur nicht das Bild, das ein BLOB-Bild ist. Die Datenbank hält das Bild so, als ob Sie es drücken würden, um das gespeicherte Bild anzuzeigen. Irgendwelche geschätzt!Bild wird nicht von der Datenbank empfangen

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 = "multipart/form-data">

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

** WARNUNG **: Bei der Verwendung von 'mysqli' Sie verwenden sollten [parametrisierte Abfragen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) und ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind- param.php) um Benutzerdaten zu Ihrer Anfrage hinzuzufügen. ** Verwenden Sie NICHT ** String-Interpolation oder Verkettung, um dies zu erreichen, weil Sie einen schwerwiegenden [SQL injection bug] erstellt haben (http://bobby-tables.com/). ** NIEMALS ** $ _POST 'oder' $ _GET' Daten direkt in eine Abfrage einfügen, es kann sehr schädlich sein, wenn jemand versucht, Ihren Fehler auszunutzen. – tadman

Antwort

0

Stattdessen könnten Sie verwenden,

<?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>"; 
    } 
?> 

Sie sollten die base64_encode() Funktion verwenden, um die BLOB Bild zu lesen.

+0

Hallo @thewebmstr leider hat das nicht funktioniert danke für den Versuch zu helfen – user6107183

+0

ist Ihre Bildspalte im Blob-Format? – keziah

+0

ja das ist korrekt – user6107183

0

Das Problem mit Bildern in einer Datenbank hängt im Allgemeinen damit zusammen, wie das Bild in der Datenbank gespeichert wurde.

Das Bild kann als Binärdatei gespeichert werden, ist aber weniger problematisch, wenn es als base64 gespeichert wird.

Was ich sehen müsste, ist der Code, der das Bild in der Datenbank speichert.
eine Datei-Eingabe mit dem Namen "Bild"

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

Dann

Bei
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')"; 
    ... 
} 

oder als Update:

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

In der Tabelle würde das Feld Bild hat einen Art von "TEXT"

ABER DAS IST NOCH NICHT GENUG ...

Sie müssen die Abmessungen und die Art des Bildes kennen.

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;} 
     } 
    } 
    } 
} 

Get Breite und Höhe

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

sie alle zusammen für eine HTML-<img>

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

Ich habe die Einfügung Bildform zum ersten Beitrag hinzugefügt, den ich getan habe – user6107183

+0

Ich bezog mich auf die SQL, um die Tabelle INSERT oder UPDATE die Tabelle.Es ist nicht so einfach wie es scheint.Was ist, wenn jemand eine Datei hochlädt, die kein Bild ist? Was ist mit dem Typ? Sie don 't möchten Einschränkungen für die Benutzer, weil Sie nicht Wissen Sie, wie Sie mit mehreren Bildtypen umgehen können? Sie können diese Routine nicht schlagen. Die Dateierweiterung kann falsch sein, der HTTP-Mime-Typ kann falsch sein, aber wenn es ein jpg, gif oder png ist, wird diese Routine richtig Wenn nicht, wird $ save falsch sein. Sie müssen den Typ wissen, wenn Sie also base64 verwenden, müssen Sie das 'data: image/$ type; base64,' ausfüllen – Misunderstood

Verwandte Themen