Mysql
 sql >> Database >  >> RDS >> Mysql

stampa di immagini BLOB MySQL?

Hai fondamentalmente due problemi qui:

  1. Come $thumb contiene i dati binari dell'immagine, il browser non lo comprenderà a meno che tu non dica al browser di quali dati si tratta (es. image/jpg ).

  2. Devi dire al browser dove si trovano i dati.

Supponiamo che tu voglia creare un'immagine che mostri il pollice in quella pagina:

<td><img src="..." alt="thumb"></td>

Il src attributo indica al browser dove può trovare i dati dell'immagine. Quindi viene utilizzato per risolvere il problema 2. Si aspetta un Uniform Resource Locator (URI).

Quindi, come ottenere il $thumb in un URI? Esistono diversi modi per farlo, incluso quello collegato in un commento .

Tuttavia, se l'immagine non è molto grande e non è necessario che sia memorizzata nella cache in modo specifico (ad es. l'HTML dovrebbe essere memorizzato nella cache, ma non l'immagine della miniatura), puoi utilizzare un data: Schema URI :

$thumbSrc = 'data:image/jpg;base64,'.base64_encode($thumb);

È quindi possibile emettere quella variabile come src valore dell'attributo:

<td><img src="<?php echo $thumbSrc; ?>" alt="thumb"></td>   

Spero che questo sia utile.

Risposta completa:

echo "<table>";
    echo "<tr class ='tablehead'><td>Name</td><td>Location</td><td>Review</td><td>Image</td><td>Thumb</td></tr>";
    while ($row = mysql_fetch_array($query))
    {   
        echo "<tr>";
            echo "<td>" . $row['user_fname'] . "</td>";
            echo "<td>" . $row['user_location'] . "</td>";
            echo "<td>" . $row['user_review'] . "</td>";                    
            echo '<td><img src="data:image/jpg;base64,', base64_encode($row['user_thumb']), '" alt='thumb'></td>'; 
            echo '<td><img src="data:image/jpg;base64,', base64_encode($row['user_image']), '" alt='image'></td>';
        echo "</tr>";
    }
echo "</table>";