html — как решить проблему с отображенным битым изображением с помощью php после загрузки в базу данных

Я пытаюсь загрузить изображение в базу данных MySQL и отобразить его вместе с описанием изображения с помощью php. После того, как я загрузил изображение и отобразил его, было отображено сломанное изображение, но описание изображения отображалось без ошибок. Как я могу решить эту проблему ? Ценю твою помощь

<?php

$msg = "";
//if upload button is pressed
if(isset($_POST['upload']))
{
// the path to store the uploaded image
$target = "images/".basename($_FILES['image']['name']);

// connect to database
$db = mysqli_connect("localhost","root","","product");

// Get all the submitted data from the form
$image = $_FILES['image']['name'];
$text = $_POST['text'];

$sql = "INSERT INTO product_list (image, text) VALUES ('$image','$text')";
mysqli_query($db,$sql); // stores the submitted data into the database table : product_list

// move uploaded image to the folder : image
if (move_uploaded_file($_FILES['image']['tmp_name'],$target))
{
$msg = "Image and text uploaded successfully";
}else
{
$msg = "There was a problem uploading image";
}
}

?>

<!DOCTYPE html>
<html>
<head>
<title>Image Upload With Description</title>
<link rel="stylesheet" type="text/css" href="formstyle.css">
</head>
<body>
<div id="content">
<?php
$db = mysqli_connect("localhost","root","","product");
$sql = "SELECT * FROM product_list";
$result = mysqli_query($db, $sql);
while ($row = mysqli_fetch_array($result))
{
echo "<div id='img_div'>";
echo "<img src='".$row['image']."'>";
echo "<p>".$row['text']."</p>";
echo "</div>";
}
?>
<form method="post" action="try.php" enctype="multipart/form-data">
<input type="hidden" name="size" value="1000000">
<div>
<input type="file" name="image">
</div>

<div>
<textarea name="text" cols="40" rows="4" placeholder="Details of product"></textarea>
</div>

<div>
<input type="submit" name="upload" value="Upload Image">
</div>
</form>
</div>
</body>
</html>

Это мой результат:

введите описание изображения здесь

2

Решение

Вы храните его в БД без images каталог. Вам нужно либо хранить его вместе с этим, либо всегда не забывать называть его так в вызовах изображений.

echo "<img src='images/".$row['image']."'>";

или сделайте запись, которую вы пишете, такой же, как местоположение файловой системы.

$image = 'images/' . $_FILES['image']['name'];

Обратите внимание, что вы открыты для инъекций SQL и файловых инъекций с этим кодом.

0

Другие решения

попробуй это

        <?php

$msg = "";
//if upload button is pressed
if(isset($_POST['upload']))
{
// the path to store the uploaded image
$destination_path = getcwd().DIRECTORY_SEPARATOR;
$target_path = $destination_path . basename( $_FILES["image"]["name"]);

// connect to database
$db = mysqli_connect("localhost","root","","product");

// Get all the submitted data from the form
$image = $_FILES['image']['name'];
$text = $_POST['text'];

$sql = "INSERT INTO product_list (image, text) VALUES ('$image','$text')";
mysqli_query($db,$sql); // stores the submitted data into the database table : product_list//@move_uploaded_file($_FILES['image']['tmp_name'], $target_path)

// move uploaded image to the folder : image
if (move_uploaded_file($_FILES['image']['tmp_name'],$target_path))
{
$msg = "Image and text uploaded successfully";
}else
{
$msg = "There was a problem uploading image";
}
}

?>

<!DOCTYPE html>
<html>
<head>
<title>Image Upload With Description</title>
<link rel="stylesheet" type="text/css" href="formstyle.css">
</head>
<body>
<div id="content">
<?php
$db = mysqli_connect("localhost","root","","product");
$sql = "SELECT * FROM product_list";
$result = mysqli_query($db, $sql);
while ($row = mysqli_fetch_array($result))
{
echo "<div id='img_div'>";
echo "<img src='".$row['image']."'>";
echo "<p>".$row['text']."</p>";
echo "</div>";
}
?>
<form method="post" action="index.php" enctype="multipart/form-data">
<input type="hidden" name="size" value="1000000">
<div>
<input type="file" name="image">
</div>

<div>
<textarea name="text" cols="40" rows="4" placeholder="Details of product"></textarea>
</div>

<div>
<input type="submit" name="upload" value="Upload Image">
</div>
</form>
</div>
</body>
</html>
0