Привет, у меня есть база данных, и мой 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']?>' />
...
Извините за мой плохой английский, и если вы можете помочь, пожалуйста. Я был бы так счастлив.
Поскольку запрос возвращает только одну строку, это упрощает то, что вам нужно сделать. В первую очередь вы можете избавиться от 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
Вы можете просто посчитать или зациклить или что-то необходимое для вывода полного массива изображений.
Вам нужно установить 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 ) ?>"/>