sql >> Database teknologi >  >> RDS >> Mysql

Billede fra MySQL-database udskrives ikke

Det er fordi din browser ikke er klar over, at de data, du sender tilbage, er et billede. Når din webserver svarer på en anmodning, har den angivet den type indhold, det er (deraf Content-Type-headeren), og din side bliver angivet som tekst. Det er derfor, der bruges billedtags:de giver dig en chance for at sige "indlejr denne anden ressource på denne placering". Hvad din kode gør, er at dumpe de binære data i billedet som tekst på skærmen - ikke hvad du ønsker.

Det du skal gøre er at oprette en anden PHP-side, såsom getImage.php, der accepterer en $_GET parameter (dvs. et række-id). Denne side vil derefter forespørge databasen og echo billeddataene, med angivelse af Content-Type-headeren.

Her er noget proof of concept-kode, som jeg skrev uden at teste, og som ikke håndterer SQL-injektion eller en række andre potentielle problemer.

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'];
}

Nu, når du bygger din HTML i din eksisterende fil, ville du gøre noget som dette:

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

Justering af dine SQL-kolonnenavne i overensstemmelse hermed.

Skål.



  1. Opret en SQL Server-database med Azure Data Studio

  2. PostgreSQL og ActiveRecord undervælges til race tilstand

  3. Hent pl/sql-array-returværdier i java

  4. Hvorfor tilføjer SQL Server et 4 byte heltal til ikke-unikke klyngede indekser