Afbeelding uit database halen werkt niet meer
Ik heb al langere tijd een script gehad waarbij ik mijn afbeeldingen (die in een database staan) er uit haal en weergeef op mijn site. Maar nu is sinds een week geleden het script er in eens mee op gehouden...
Ik snap niet waarom. ik heb gezocht op internet naar mogelijke andere scripten maar kan zo niets vinden :s
Hopelijk kan iemand hier mij verder helpen.
Het script wat ik nu heb is:
*************************************
require('db.inc.php'); db_connect();
$id=$_GET["id"];
$result = mysql_query("SELECT id,type,length,content FROM photos WHERE id = '$id'") or die(mysql_error());
while($row = mysql_fetch_array( $result )) {
echo $row['content'];
}
mysql_close($db);
*************************************
Ik heb gemerkt dat hij niet eens meer in de while lus terecht komt..
Mijn afbeeldingen staan als blob opgeslagen in het veld content. en ik roep de foto door dezesite.php?id=xxx
Ik hoop dat iemand me verder kan helpen!!
Groeten Dries
Een database is niet bedoeld voor het opslaan van afbeeldingen, hij is bedoeld voor tekst.
Je database wordt er harstikke traag door en vindt afbeeldingen ook zeker niet leuk.
Ja dat weet ik, maar ik heb maar een beperkte server space en het database heeft dit niet, dus zo kan ik er eindeloos fotos in opslaan, iets wat ik wel een leuk truckje vond om zo de collectie online te bewaren
Quote:
Ik heb gemerkt dat hij niet eens meer in de while lus terecht komt..
Dan gaat het fout bij je query. Geeft hij geen enkele error?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$sql = "
SELECT id, type, length, content
FROM photos
WHERE id = " . $id;
if (!$res = mysql_query ($sql)) {
echo '<pre>';
trigger_error (mysql_errno () . ': ' . mysql_error ());
echo htmlentities ($sql);
echo '</pre>';
}
else {
while ($row = mysql_fetch_assoc ($res)) {
// echoën
}
}
?>
$sql = "
SELECT id, type, length, content
FROM photos
WHERE id = " . $id;
if (!$res = mysql_query ($sql)) {
echo '<pre>';
trigger_error (mysql_errno () . ': ' . mysql_error ());
echo htmlentities ($sql);
echo '</pre>';
}
else {
while ($row = mysql_fetch_assoc ($res)) {
// echoën
}
}
?>
Met die code van jou is dit de uitkomst:
Notice: 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 in /home/.sites/40/site68/web/image2.php on line 30
SELECT id, type, length, content
FROM photos
WHERE id =
in die line nummers staat dit:
29 echo '<pre>';
30 trigger_error (mysql_errno () . ': ' . mysql_error ());
nog enige ideeen ?
Daaruit blijkt dat $_GET['id'] niet gevuld is. Je zou hem eerst moeten checken met isset. Laat eens het (stukje!) code zien waarmee je je links in elkaar sleutelt?
zet er anders ff error_report(E_ALL); boven.. (als je php 5.* hebt moet je E_ALL ergens anders in vervangen..)
site.php?id=8729
maar ik dacht even dat je in dit stukje:
$sql = "
SELECT id, type, length, content
FROM photos
WHERE id = " . $id;
de $id buiten de " had gezet en dat hij dan daardoor de id niet mee kreeg..
nu heb ik dit veranderd naar:
WHERE id = '$id'"
maar dan geeft hij ook niets weer...
krijg ik meteen error:
Fatal error: Call to undefined function error_report() in /home/.sites/40/site68/web/image2.php on line 4
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
if (isset ($_GET['id']) $$ is_numeric ($_GET['id'])) {
$sql = "
SELECT id, type, length, content
FROM photos
WHERE id = " . $_GET['id'];
if (!$res = mysql_query ($sql)) {
echo '<pre>';
trigger_error (mysql_errno () . ': ' . mysql_error ());
echo htmlentities ($sql);
echo '</pre>';
}
else {
while ($row = mysql_fetch_assoc ($res)) {
// echoën
}
}
}
?>
if (isset ($_GET['id']) $$ is_numeric ($_GET['id'])) {
$sql = "
SELECT id, type, length, content
FROM photos
WHERE id = " . $_GET['id'];
if (!$res = mysql_query ($sql)) {
echo '<pre>';
trigger_error (mysql_errno () . ': ' . mysql_error ());
echo htmlentities ($sql);
echo '</pre>';
}
else {
while ($row = mysql_fetch_assoc ($res)) {
// echoën
}
}
}
?>
[/voorkauwmodus]
Dries schreef op 10.12.2006 14:47:
@leroy: gewoon boven aan gezet?
krijg ik meteen error:
Fatal error: Call to undefined function error_report() in /home/.sites/40/site68/web/image2.php on line 4
krijg ik meteen error:
Fatal error: Call to undefined function error_report() in /home/.sites/40/site68/web/image2.php on line 4
Hij bedoelt error_reporting(E_ALL);
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
En heb die code geprobeerd, wel $$ vervangen door && neem ik aan
maar nu is de uitkomst nog een blanco pagina
ik weet wel zeker dat het plaatje in het database staat want als ik met mysql-front in mijn database kijk zie ik er bij de blob gewoon het plaatje in staan...
Ik hoop echt dat je nog een andere oplossing hebt...
Geen ideeen meer :(
Ik moest de variabelen buiten de quotes plaatsen:
$id = $_GET["id"];
$result = mysql_query("SELECT id,type,length,content FROM photos WHERE id = '".$id."'") or die(mysql_error());
while($row = mysql_fetch_array( $result )) {
echo $row['content'];
}
mysql_close($db);
Allen iig super bedankt voor het helpen!
Groetjes Dries