BLOB plaatje uit database weergeven - PHP
Graag wil ik een een plaatje van het type BLOB in mijn database opvragen in mijn php code en weergeven op mijn site. de kolomnaam heet 'klein plaatje'. Zou iemand voor mij de code hiervoor willen schrijven?
Als ik Google op 'read image from mysql php' dan vind ik al een hoop interessants.
Gewijzigd op 23/12/2013 20:52:54 door - Ariën -
Dat heb ik de afgelopen paar uur gedaan, maar mijn website wil maar niet het plaatje afbeelden. Er komt enkel een klein vierkantje met een tekentje erin.. Alsof het ID verkeerd is?
Gewijzigd op 23/12/2013 21:04:38 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
require_once("databaseconnectie.php");
$sql = "SELECT 'klein plaatje' FROM catalogus WHERE productnaam ='iPhone 5S'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
header('Content-type: image/jpeg');
while ($row = mysql_fetch_array($result)) {
echo $row['klein plaatje'];
}
?>
require_once("databaseconnectie.php");
$sql = "SELECT 'klein plaatje' FROM catalogus WHERE productnaam ='iPhone 5S'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
header('Content-type: image/jpeg');
while ($row = mysql_fetch_array($result)) {
echo $row['klein plaatje'];
}
?>
de tabelnaam is catalogus en de kolom naam heet 'klein plaatje' van het type BLOB.
Dit is hetgene wat ik bedoel met dat tekentje: http://imageshack.us/photo/my-images/5/tutb.png/
Kijk linksboven
Gewijzigd op 23/12/2013 21:21:24 door F vh
Waarom een while() als je maar een enkel record ophaalt?
Kijk eerst eens naar goede foutafhandeling op je query.
Gewijzigd op 23/12/2013 21:26:00 door - Ariën -
Gewijzigd op 23/12/2013 21:35:07 door F vh
Je huidige script zou versimpeld kunnen worden naar het volgende:
Gebruik liever underscores dan spaties. Verder is de manier om binnen MySQL (maar dan ook alleen MySQL) aan te geven dat je het over een kolom naam hebt om deze binnen backticks (`klein plaatje`) te zetten. Binnen PostgreSQL zijn dat dubbele aanhalingstekens ("klein plaatje"), en binnen microsoft access zijn het rechte haakjes geloof ik ([klein plaatje]).
Als je underscores gebruikt heb je die tekens niet nodig, en is je sql query meer portable.
Gewijzigd op 23/12/2013 22:01:56 door Dos Moonen
Bedankt voor de info over de haakjes. Ik snap alleen niet waarom het daarnaar versimpeld kan worden.. Dan doe ik helemaal niks met de querie en vraag ik ook niks op.
Wordt je query wel uitgevoerd? Wat zegt de foutafhandeling?
Ik snap niet precies hoe ik die foutafhandeling moet implementeren. Zou je het even voor willen doen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$query = mysql_query("SELECT 'klein plaatje' FROM catalogus WHERE productnaam ='iPhone 5S'");
echo mysql_result($query, 0); // 'klein plaatje' op de voorwaarde dat er een product met de naam 'iPhone 5S' bestaat
##############################
$query = mysql_query("SELECT 'klein plaatje' FROM catalogus");
echo mysql_result($query, 0); // 'klein plaatje' op de voorwaarde dat de tabel catalogus bestaat
##############################
$query = mysql_query"SELECT 'klein plaatje'");
echo mysql_result($query, 0); // 'klein plaatje', geen woordwaarde..
##############################
echo 'klein plaatje'; // zelfde resultaat als de bovenstaande stukjes code omdat die mysql vragen de letterlijke tekst 'klein plaatje' terug te geven.
?>
$query = mysql_query("SELECT 'klein plaatje' FROM catalogus WHERE productnaam ='iPhone 5S'");
echo mysql_result($query, 0); // 'klein plaatje' op de voorwaarde dat er een product met de naam 'iPhone 5S' bestaat
##############################
$query = mysql_query("SELECT 'klein plaatje' FROM catalogus");
echo mysql_result($query, 0); // 'klein plaatje' op de voorwaarde dat de tabel catalogus bestaat
##############################
$query = mysql_query"SELECT 'klein plaatje'");
echo mysql_result($query, 0); // 'klein plaatje', geen woordwaarde..
##############################
echo 'klein plaatje'; // zelfde resultaat als de bovenstaande stukjes code omdat die mysql vragen de letterlijke tekst 'klein plaatje' terug te geven.
?>
Gebruik een underscore, of gebruik backticks.
Daarna vervang je de hele while door echo $row['klein_plaatje'] (er vanuit gaand dat je voor de underscore optie bent gegaan)
Negeer voorlopig even wat - Aar - zegt over foutafhandeling, dat is nog niet van toepassing.
Gewijzigd op 23/12/2013 22:12:49 door Dos Moonen
Dos Moonen op 23/12/2013 22:07:15:
Negeer voorlopig even wat - Aar - zegt over foutafhandeling, dat is nog niet van toepassing.
Persoonlijk vind ik dit grote onzin....
Ik vind dit niet iets wat je later in moet bouwen. Wat nou als je query ook echt stuk is? Foutafhandeling hoort nu eenmaal, tenzij je graag haren uit je kop wilt trekken als je query ergens op stuk lijkt te lopen, en je niet weet wat er mis is.
Het slot van een deur bouw je toch ook niet achter af in in een deur?
Gewijzigd op 23/12/2013 22:20:06 door - Ariën -
Nu ik de img tag heb toegevoegd Zoals ik het nu gedaan heb, krijg ik precies hetzelfde, maar dan helemaal achteraan die shit weer dat kleine icoontje.. (link van een screen boven in het topic).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
require_once("databaseconnectie.php");
$sql = "SELECT kleinplaatje FROM catalogus WHERE productnaam ='Nexus 10'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
echo $row['kleinplaatje'];
?>
<img src="index.php">
require_once("databaseconnectie.php");
$sql = "SELECT kleinplaatje FROM catalogus WHERE productnaam ='Nexus 10'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
echo $row['kleinplaatje'];
?>
<img src="index.php">
Gewijzigd op 23/12/2013 22:47:25 door F vh
test.html
En dan maak je ook nog een pagina test.php. Hierin moet je dan dat plaatje ophalen uit de database en dan via header('Content-type: image/jpeg'); weergeven zoals je al eerder hebt gedaan.
test.html zit de code die je net gaf. In test.php zit dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<htmL>
<body>
<?php
require_once("databaseconnectie.php");
$sql = "SELECT kleinplaatje FROM catalogus WHERE productnaam ='iPhone 5S'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
echo mysql_result($result, 0);
header('Content-type: image/jpeg');
?>
</body>
</html>
<body>
<?php
require_once("databaseconnectie.php");
$sql = "SELECT kleinplaatje FROM catalogus WHERE productnaam ='iPhone 5S'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
echo mysql_result($result, 0);
header('Content-type: image/jpeg');
?>
</body>
</html>
Wat is verkeerd?
in test.php hoort alleen php te zitten en geen html. <html> en <body> horen daar dus niet. En je moet je resultaat echo'en onder de header.