Mysql
 sql >> Base de données >  >> RDS >> Mysql

impression d'images blob mySQL ?

Vous avez essentiellement deux problèmes ici :

  1. Comme $thumb contient les données binaires de l'image, le navigateur ne les comprendra pas à moins que vous ne disiez au navigateur de quelles données il s'agit (par exemple image/jpg ).

  2. Vous devez indiquer au navigateur où se trouvent les données.

Supposons que vous souhaitiez créer une image affichant le pouce dans cette page :

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

Le src L'attribut indique au navigateur où il peut trouver les données de l'image. Il est donc utilisé pour résoudre le problème 2. Il attend un Uniform Resource Locator (URI).

Alors, comment obtenir le $thumb dans une URI ? Il existe plusieurs façons de le faire, y compris celle lié dans un commentaire .

Cependant, si l'image n'est pas très grande et que vous n'avez pas besoin de la mettre en cache spécifiquement (par exemple, le code HTML doit être mis en cache, mais pas l'image du pouce), vous pouvez utiliser un data: Schéma d'URI :

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

Vous pouvez ensuite sortir cette variable en tant que src valeur de l'attribut :

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

J'espère que cela vous sera utile.

Réponse complète :

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