Maison >base de données >tutoriel mysql >Pourquoi mon image MySQL BLOB ne s'affiche-t-elle pas correctement ?
Affichage des images stockées sous forme de BLOB dans MySQL
En cherchant à récupérer des images stockées sous forme de BLOB dans une base de données, vous rencontrez des difficultés pour les afficher correctement. Votre code récupère les données et les transmet à un script qui définit l'en-tête sur image/jpeg et fait écho à l'image. Cependant, vous observez une icône d'image mais pas l'image elle-même dans le navigateur.
Pour résoudre ce problème, il est suggéré d'utiliser une approche modifiée :
Insérer des images dans la base de données
// Retrieve image data from a temporary file $image = file_get_contents($_FILES['images']['tmp_name']); // Prepare an SQL statement and bind the image parameter $query = "INSERT INTO products (image) VALUES(?)"; $stmt = $db->prepare($query); $stmt->bind_param('s', $image); // Execute the statement $stmt->execute();
Récupérer et afficher des images à partir du Base de données
// Prepare an SQL statement and bind the ID parameter $sql = "SELECT * FROM products WHERE id = ?"; $stmt = $db->prepare($sql); $stmt->bind_param('s', $id); // Execute the statement and retrieve the result $stmt->execute(); $result = $stmt->get_result(); $row = $result->fetch_array(); // Encode the image data as base64 and embed it in an HTML element echo '<img src="data:image/jpeg;base64,' . base64_encode($row['image']) . '" />';
Cette approche révisée devrait vous permettre d'afficher efficacement les images stockées sous forme de BLOB dans MySQL. En liant le paramètre image et en l'encodant en base64 dans l'élément HTML, vous pouvez récupérer et présenter correctement les données de l'image.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!