sql >> Databáze >  >> RDS >> Mysql

Obrázek z databáze MySQL se netiskne

Je to proto, že váš prohlížeč si neuvědomuje, že data, která posíláte zpět, jsou obrázky. Když váš webový server odpoví na požadavek, specifikuje typ obsahu, o který se jedná (proto hlavička Content-Type) a vaše stránka je specifikována jako text. To je důvod, proč se používají značky obrázků:dávají vám možnost říci „vložte tento další zdroj do tohoto umístění“. Váš kód dělá výpis binárních dat obrázku jako text na obrazovku – ne to, co chcete.

Co musíte udělat, je vytvořit další stránku PHP, například getImage.php, která přijímá parametr $_GET (tj. id řádku). Tato stránka se poté dotazuje na databázi a echo data obrázku s uvedením záhlaví Content-Type.

Zde je nějaký důkaz koncepčního kódu, který jsem napsal bez testování a který nezvládá vkládání SQL nebo řadu dalších potenciálních problémů.

header('Content-Type: image/png'); //change to the proper content type for your type of image

$imageID = mysql_real_escape_string($_GET['q']);

$result = mysql_query(sprintf('SELECT file_data FROM images2 WHERE id="%s" AND file_data IS NOT NULL LIMIT 1', $_GET['q']));

if(mysql_num_rows($result) !== 1)
{
  //a row wasn't found, so 404
  header('HTTP/1.0 404 File Not Found');
}
else
{
  $row = mysql_fetch_object($result);
  echo $row['file_data'];
}

Nyní, když vytváříte HTML ve svém existujícím souboru, udělali byste něco takového:

echo '<td class="sitename2"><img src="./getImage.php?q='.$row["id"].'"/></td>';

Podle toho upravte názvy sloupců SQL.

Na zdraví.



  1. Jak používat zaškrtávací políčka k načtení konkrétních dat v databázi

  2. Halda SQL Server v.s. shlukovaný index

  3. Průběžné součty pro více kategorií v MySQL

  4. Jak nainstalovat MariaDB na Rocky Linux a AlmaLinux