mysql — получение BLOB-объектов из базы данных с помощью PHP и использование их в тегах HTML

Привет, у меня есть база данных, и мой php-документ правильно к ней подключен:

<?php
$con=new mysqli ("localhost","root","","chroniclemark");

И у меня есть запрос, который получает изображение:

$sqlget = "SELECT imagem FROM galeria where idg = 1";
$sqldata = mysqli_query($con,$sqlget) or die ('error getting database');

while($row = mysqli_fetch_array($sqldata, MYSQLI_ASSOC)){
$lol = '<img src="data:image/jpeg;base64,'.base64_encode( $row['imagem'] ).'"/>';

}
?>

И это мое заявление php. Если я echo $lol; , изображение появляется.
Теперь мне нужно поместить это в HTML-тег IMG.
И это не работает:

<img src='image.php?<?php $row['imagem']?>' />

Я пробовал другие вещи, и ничего не работает.
Кстати, тег img и оператор php находятся в одном файле, вот так:

 </head>
<body>

<?php
$con=new mysqli ("localhost","root","","chroniclemark");
if($con->connect_error)
{
echo $con->connect_errno;
die("Database Connection Failed");
}

$sqlget = "SELECT imagem FROM galeria where idg = 1";
$sqldata = mysqli_query($con,$sqlget) or die ('error getting database');

while($row = mysqli_fetch_array($sqldata, MYSQLI_ASSOC)){
$lol = '<img src="data:image/jpeg;base64,'.base64_encode( $row['imagem'] ).'"/>';

}
?>

<img src='image.php?<?php $row['imagem']?>' />

...

Извините за мой плохой английский, и если вы можете помочь, пожалуйста. Я был бы так счастлив.

1

Решение

Поскольку запрос возвращает только одну строку, это упрощает то, что вам нужно сделать. В первую очередь вы можете избавиться от while цикл, поскольку вам не нужно перебирать набор результатов:

<?php
$con=new mysqli ("localhost","root","","chroniclemark");
if($con->connect_error)
{
echo $con->connect_errno;
die("Database Connection Failed");
}

$sqlget = "SELECT imagem FROM galeria where idg = 1";
$sqldata = mysqli_query($con,$sqlget) or die ('error getting database');

$row = mysqli_fetch_array($sqldata, MYSQLI_ASSOC);
$lol = base64_encode( $row['imagem'] );?>

В своем вопросе вы либо забыли сделать кодировку, либо не знали, что это требуется. Теперь, когда кодирование выполнено, вы можете вывести изображение в вашей разметке:

<img src="data:image/jpeg;base64, <?php echo $lol; ?>" />

Что делать, если у вас более одного ряда? Вы должны поместить изображения в массив, а затем вызвать их должным образом позже:

<?php
$con=new mysqli ("localhost","root","","chroniclemark");
if($con->connect_error)
{
echo $con->connect_errno;
die("Database Connection Failed");
}

$sqlget = "SELECT imagem FROM galeria where idg = 1";
$sqldata = mysqli_query($con,$sqlget) or die ('error getting database');

while ($row = mysqli_fetch_array($sqldata, MYSQLI_ASSOC)) {
$lol[] = base64_encode( $row['imagem'] );
}

?>

А потом что-то вроде:

<img src="data:image/jpeg;base64, <?php echo $lol[1]; ?>" />

Который вывел бы второе изображение в массив. Поскольку все массивы начинаются с 0 Вы можете просто посчитать или зациклить или что-то необходимое для вывода полного массива изображений.

1

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

Вам нужно установить src тега image с правильным префиксом base64, как вы это делали в цикле while.

Это должно работать, но это не проверено:

</head>
<body>

<?php
$con=new mysqli ("localhost","root","","chroniclemark");
if($con->connect_error)
{
echo $con->connect_errno;
die("Database Connection Failed");
}

$sqlget = "SELECT imagem FROM galeria where idg = 1";
$sqldata = mysqli_query($con,$sqlget) or die ('error getting database');

while($row = mysqli_fetch_array($sqldata, MYSQLI_ASSOC)){
$lol = $row['imagem'];

}
?>

<img src="data:image/jpeg;base64,<?php base64_encode( $lol ) ?>"/>
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector