Hallo,
ich hab nen CMS-System in dem eine Gallerie integriert ist, bei der die Daten in ne MySQL Datenbank gespeichert werden. Das hat den Sinn, dass nur eingeloggte User die Bilder anzeigen können und so keiner von aussen die Bilder verlinken kann.
Das Problem, welches ich hab tritt sporadisch und völlig wahllos beim Upload auf.
Der Upload ansich scheint reibungslos zu funzen, nur das Auslesen oder das Speichern in der Datenbank scheint nicht zu gehen.
Ich geb euch mal den relevanten Teilabschnitt vom Code.
Vielleicht könnt ihr mir helfen. Der Fehler tritt vorwiegend bei JPG's auf, aba auch GIF's waren schon betroffen.
$upload_file iss die hochgeladene Datei.
$dbc iss ne Datenbankklasse, wobei ->get() ein mysql_fetch_array() auslöst und ->put() nen normales query ohne rückgabe.
Am Ende hol ich mir die aktuelle ID des Datensatzes aus der Datenbank indem ich nach den Binärdaten suche. Da in der Gallerie jedes Bild nur einmal eingestellt wird, klappt das recht gut, ausser bei den kaputten Uploads, denn da sind die Daten irgendwie geschrottet in der Datenbank. Ich vermute deshalb, dass die Daten wärend dem Transfer in die DB geschrottet werden und deshalb nicht richtig angezeigt werden.
Kann man sowas verhindern? Kann man den Datentransfer von Binärdaten zur MySQL-DB irgendwie stabilisieren? Ich würds eben ungern in Dateien packen.
ich hab nen CMS-System in dem eine Gallerie integriert ist, bei der die Daten in ne MySQL Datenbank gespeichert werden. Das hat den Sinn, dass nur eingeloggte User die Bilder anzeigen können und so keiner von aussen die Bilder verlinken kann.
Das Problem, welches ich hab tritt sporadisch und völlig wahllos beim Upload auf.
Der Upload ansich scheint reibungslos zu funzen, nur das Auslesen oder das Speichern in der Datenbank scheint nicht zu gehen.
Ich geb euch mal den relevanten Teilabschnitt vom Code.
Vielleicht könnt ihr mir helfen. Der Fehler tritt vorwiegend bei JPG's auf, aba auch GIF's waren schon betroffen.
PHP-Code:
<?php
$file = fopen($upload_file,"rb");
$imagedata = addslashes(fread($file,$my_size));
fclose($file);
unlink($upload_file);
if($pic_id == "-1"){
$sql = "INSERT INTO $tblGalleryImages SET gal_id='$gal_id', pic_mime='$myptype', pic_data='$imagedata',pic_comment='".addslashes($pic_comment)."'";
}
else{
$sql = "UPDATE $tblGalleryImages SET modded='0',gal_id='$gal_id', pic_mime='$my_type', pic_data='$imagedata',pic_comment='".addslashes($pic_comment)."' WHERE pic_id='$pic_id'";
}
$dbc->put($sql);
$sql = "SELECT * FROM $tblGalleryImages WHERE pic_data='$imagedata'";
//$dbc->dbinfo=1;
$imagedata = $dbc->get($sql);
?>
$dbc iss ne Datenbankklasse, wobei ->get() ein mysql_fetch_array() auslöst und ->put() nen normales query ohne rückgabe.
Am Ende hol ich mir die aktuelle ID des Datensatzes aus der Datenbank indem ich nach den Binärdaten suche. Da in der Gallerie jedes Bild nur einmal eingestellt wird, klappt das recht gut, ausser bei den kaputten Uploads, denn da sind die Daten irgendwie geschrottet in der Datenbank. Ich vermute deshalb, dass die Daten wärend dem Transfer in die DB geschrottet werden und deshalb nicht richtig angezeigt werden.
Kann man sowas verhindern? Kann man den Datentransfer von Binärdaten zur MySQL-DB irgendwie stabilisieren? Ich würds eben ungern in Dateien packen.
Kommentar