sql >> Databasteknik >  >> RDS >> Mysql

Bild från MySQL-databas skrivs inte ut

Det beror på att din webbläsare inte inser att informationen du skickar tillbaka är en bild. När din webbserver svarar på en förfrågan har den angett vilken typ av innehåll det är (därav rubriken Content-Type), och din sida anges som text. Det är därför bildtaggar används:de ger dig en chans att säga "bädda in den här andra resursen på den här platsen". Vad din kod gör är att dumpa bildens binära data som text på skärmen - inte vad du vill ha.

Vad du behöver göra är att skapa en annan PHP-sida, till exempel getImage.php, som accepterar en $_GET-parameter (dvs. ett rad-id). Den sidan kommer sedan att fråga databasen och echo bilddata, med angivande av Content-Type-huvudet.

Här är lite proof of concept-kod som jag skrev utan att testa och som inte hanterar SQL-injektion, eller ett antal andra potentiella problem.

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 befintliga fil, skulle du göra något så här:

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

Justera dina SQL-kolumnnamn därefter.

Skål.



  1. Förstå PostgreSQL-frågeprestanda

  2. dBase Support är tillbaka i Microsoft Access!

  3. Hur skapar man ett unikt slumpmässigt heltals-ID för primärnyckel för tabell?

  4. SQLiteReadOnlyDatabaseException:försök att skriva en skrivskyddad databas (kod 1032)