使用PHP从数据库获取Blob并在HTML标记上使用它

使用PHP从数据库获取Blob并在HTML标记上使用它,php,mysql,image,blob,Php,Mysql,Image,Blob,嘿,我有一个数据库,我的php文档正确连接到它: <?php $con=new mysqli ("localhost","root","","chroniclemark"); 我试过其他的方法,但没有效果。 顺便说一下,img标记和php语句位于同一个文件中,如下所示: </head> <body> <?php $con=new mysqli ("localhost","root","","chroniclemark"); if($con

嘿,我有一个数据库,我的php文档正确连接到它:

<?php
$con=new mysqli ("localhost","root","","chroniclemark");
我试过其他的方法,但没有效果。 顺便说一下,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']?>' />

                            ...

' />
...

对不起,我的英语不好,如果你能帮忙,请帮我。我会很高兴的。

您需要使用正确的base64前缀设置图像标记的src,就像您在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 ) ?>"/>

"/>

您需要使用正确的base64前缀设置图像标记的src,就像您在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 ) ?>"/>

"/>

由于查询只返回一行,这简化了您需要执行的操作。基本上,您可以摆脱
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
开头,因此您可以只进行计数、循环或任何必要的操作来输出完整的图像数组。

由于查询只返回一行,因此这简化了您需要执行的操作。基本上,您可以摆脱
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开始
,因此您可以只进行计数或循环或任何必要的操作,以输出完整的图像数组。

echo';在中工作,您需要将“$lol”变量回显到浏览器。您的示例没有显示。
“/>
是用于同一个文件还是另一个文件?是否只有一行数据?…是否有人在家?;-)我们要求澄清,但电话挂断了。echo“”;在中工作,您需要将“$lol”变量回显到浏览器。您的示例没有显示。
“/>
是用于同一个文件还是另一个文件?是否只有一行数据?…是否有人在家?;-)我们要求澄清,但手机已经挂断。这里唯一的问题是,每次循环时,您都会覆盖
$lol
,并且只会获得最后一张图像。如果只有一行,这应该不会引起问题,但也不需要循环。啊,我理解你的意思,但我还没有完全工作。这里唯一的问题是每次循环时你都会覆盖
$lol
,只会得到最后一张图像。如果只有一行,这应该不会引起问题,但也不需要循环。啊,我理解你的意思,但我还没有完全工作。没有循环肯定会更好更简单,但我得到了同样的结果。感觉我错过了一些简单的东西。@MarkCoelho我对图像tagi haven做了一个轻微的更改,没有,但我会看一看,它与这个更改一起工作!非常感谢你。如果你需要一个标志设计,打我up@MarkCoelho标志设计,嗯?;-)我的手上有一点竞争,没有环肯定更好更简单,但我得到了同样的东西。感觉我错过了一些简单的东西。@MarkCoelho我对图像tagi haven做了一个轻微的更改,没有,但我会看一看,它与这个更改一起工作!非常感谢你。如果你需要一个标志设计,打我up@MarkCoelho标志设计,嗯?;-)我手上有点竞争哈哈