2017-02-20 52 views
1

哎,所以我有一個數據庫,我的PHP文件是否正確連接到它:從PHP數據庫獲取Blob和使用它的HTML標籤

<?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語句。如果我,圖像出現。 現在我需要把它放在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']?>' /> 

          ... 

對不起,我的英文不好,如果你能幫助,請做。我會很高興。

+0

echo'';在<?php事物內部工作並使圖像顯示。但是我需要在<?php –

+0

之外使用標記。您需要將'$ lol'變量回顯給瀏覽器。你的例子不顯示。 –

+0

''/>'是否打算在相同的文件或其他文件中使用? –

回答

1

由於查詢僅返回一行,這簡化你需要做什麼。

<?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']); 


?> 

在你的問題你要麼忘記做編碼或不知道它是必需的:主要是因爲你沒有在結果集中需要循環,你可以擺脫while循環。現在,因爲編碼的照顧,可以輸出在你的標記圖像:

<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開頭,因此您只需計數或循環或輸出完整圖像陣列所需的任何數據即可。

+0

沒有循環,它絕對更好更簡單,但我得到的是同樣的結果。感覺就像我缺少一些簡單的東西。 –

+0

您是否檢查過服務器的錯誤日誌? –

+0

@MarkCoelho我對圖像標籤 –

0

您需要使用正確的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) ?>"/> 
+0

這裏唯一的問題是你每次循環都會覆蓋'$ lol',只會得到最後一張圖片。如果只有一行,這不應該引起問題,但也不需要循環。 –

+0

啊,我明白你的意思,但我還沒有工作。 –