Image uploaden in mysql failed
Nu heb ik tijdelijk via phpmyadmin wat materiaal in de database geplaatst en krijg dit ook zonder problemen netjes in de pagina weergegeven.
Het uploaden is een groter probleem. Heb nu al aantal code-samples van internet bekeken maar kom steeds uit op een grote witte pagina die niks doet. Momenteel is dit mijn form:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<form enctype="multipart/form-data" action="../includes/fotouploaden.php?id=1" method="POST">
<table>
<tr>
<td><img src="../../includes/fotoweergeven.php?id=1" / width="100px" height="100px" class="donkererand"></td>
<td><input type="hidden" name="MAX_FILE_SIZE" value="30000" /><input name="imgfile" type="file" /><input type="submit" value="Send File" /></td>
</tr>
</table>
</form>
<table>
<tr>
<td><img src="../../includes/fotoweergeven.php?id=1" / width="100px" height="100px" class="donkererand"></td>
<td><input type="hidden" name="MAX_FILE_SIZE" value="30000" /><input name="imgfile" type="file" /><input type="submit" value="Send File" /></td>
</tr>
</table>
</form>
en dit is de inhoud van fotoweergeven.php
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
<?
include ('../includes/dbverbinding.php');
$id = $_GET['id'];
$fileName = $_FILES[imgfile][name]; // image file name
$tmpName = $_FILES[imgfile][tmp_name]; // name of the temporary stored file name
$fileSize = $_FILES[imgfile][size]; // size of the uploaded file
$fileType = $_FILES[imgfile][type]; // file type
$fp = fopen($tmpName, r); // open a file handle of the temporary file
$imgContent = fread($fp, filesize($tmpName)); // read the temp file
fclose($fp); // close the file handle
mysql_query("UPDATE `MIJNTABELNAAM`.`teksten` SET `foto` =$imgContent WHERE `teksten`.`id` =$id") or die(Error, query failed);
echo "<br>Image successfully uploaded to database<br>";
?>
include ('../includes/dbverbinding.php');
$id = $_GET['id'];
$fileName = $_FILES[imgfile][name]; // image file name
$tmpName = $_FILES[imgfile][tmp_name]; // name of the temporary stored file name
$fileSize = $_FILES[imgfile][size]; // size of the uploaded file
$fileType = $_FILES[imgfile][type]; // file type
$fp = fopen($tmpName, r); // open a file handle of the temporary file
$imgContent = fread($fp, filesize($tmpName)); // read the temp file
fclose($fp); // close the file handle
mysql_query("UPDATE `MIJNTABELNAAM`.`teksten` SET `foto` =$imgContent WHERE `teksten`.`id` =$id") or die(Error, query failed);
echo "<br>Image successfully uploaded to database<br>";
?>
Het lijkt er op alsof de temp file niet aangemaakt wordt. Dien ik dit zelf te doen middels php of is er een ander probleem?
bovenaan je script.
Haal verder de variabelen buiten quotes en laat zien wat er fout gaat aan je query.
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
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
include ('../includes/dbverbinding.php');
$id = $_GET['id'];
$fileName = $_FILES[imgfile][name]; // image file name
$tmpName = $_FILES[imgfile][tmp_name]; // name of the temporary stored file name
$fileSize = $_FILES[imgfile][size]; // size of the uploaded file
$fileType = $_FILES[imgfile][type]; // file type
$fp = fopen($tmpName, r); // open a file handle of the temporary file
$imgContent = fread($fp, filesize($tmpName)); // read the temp file
fclose($fp); // close the file handle
mysql_query("UPDATE MIJNTABELNAAM . teksten SET foto =$imgContent WHERE teksten. id =$id") or die(Error, query failed);
echo "<br>Image successfully uploaded to database<br>";
?>
error_reporting(E_ALL);
ini_set('display_errors',1);
include ('../includes/dbverbinding.php');
$id = $_GET['id'];
$fileName = $_FILES[imgfile][name]; // image file name
$tmpName = $_FILES[imgfile][tmp_name]; // name of the temporary stored file name
$fileSize = $_FILES[imgfile][size]; // size of the uploaded file
$fileType = $_FILES[imgfile][type]; // file type
$fp = fopen($tmpName, r); // open a file handle of the temporary file
$imgContent = fread($fp, filesize($tmpName)); // read the temp file
fclose($fp); // close the file handle
mysql_query("UPDATE MIJNTABELNAAM . teksten SET foto =$imgContent WHERE teksten. id =$id") or die(Error, query failed);
echo "<br>Image successfully uploaded to database<br>";
?>
En krijg nog steeds een witte pagina terug.. zonder enige info
MIJNTABELNAAM . teksten: moet MIJNTABELNAAM . daar niet weg?
teksten. id moet denk ik teksten.id zijn.
foto =$imgContent moet tussen haakjes en database proof: foto = '".mysql_real_escape_string($imgContent)."'
Daarna:
die(’Error, query failed’) kan het zijn dat je hier toevallig ' moet gebruiken ipv ’
Gewijzigd op 30/06/2010 14:03:47 door Pieter van Linschoten
en je gebruikt geen where in je SQL of ander een order by is misschien ook wel handig, of heb ik dat nu ?
Kevin, het is een update query, daar heb je geen ORDER BY.
Excuses!
Gewijzigd op 30/06/2010 14:06:13 door Kevin van Leeuwen
Pieter van Linschoten op 30/06/2010 13:56:09:
In je query:
MIJNTABELNAAM . teksten: moet MIJNTABELNAAM . daar niet weg?
teksten. id moet denk ik teksten.id zijn.
foto =$imgContent moet tussen haakjes en database proof: foto = '".mysql_real_escape_string($imgContent)."'
Daarna:
die(’Error, query failed’) kan het zijn dat je hier toevallig ' moet gebruiken ipv ’
MIJNTABELNAAM . teksten: moet MIJNTABELNAAM . daar niet weg?
teksten. id moet denk ik teksten.id zijn.
foto =$imgContent moet tussen haakjes en database proof: foto = '".mysql_real_escape_string($imgContent)."'
Daarna:
die(’Error, query failed’) kan het zijn dat je hier toevallig ' moet gebruiken ipv ’
Oke! het script hing op inderdaad de ` ipv de ' bij de die.
Krijg nu een hele rits errors terug.
Eigenlijk vooral use of undefined constant...
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$fileName = $_FILES[imgfile][name]; // image file name
$tmpName = $_FILES[imgfile][tmp_name]; // name of the temporary stored file name
$fileSize = $_FILES[imgfile][size]; // size of the uploaded file
$fileType = $_FILES[imgfile][type]; // file type
?>
$fileName = $_FILES[imgfile][name]; // image file name
$tmpName = $_FILES[imgfile][tmp_name]; // name of the temporary stored file name
$fileSize = $_FILES[imgfile][size]; // size of the uploaded file
$fileType = $_FILES[imgfile][type]; // file type
?>
je hebt geen enkele string tussen quotes staan.
Vergelijk eens met het onderstaande (kijk naar de kleuren)
Heb alle errors nu al weg weten werken. Krijg nu slechts nog een query error terug.. Tot zover dus iedereen al vast bedankt. Ga nu zelf weer even vogelen..
Als er resultaat is meldt ik het hier
Ik zocht het probleem op de verkeerde plaats. *very ashamed*
Ik probeerde steeds een file van 31 kb te uploaden terwijl de maxsize op 30 kb stond...
Nu zijn alle problemen dus opgelost. Thanks anyway everyone
Maar waarom wil je de hele foto in de database zetten en niet alleen de link er naar?