Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP und Images - Binärdaten in MySQL-Datenbank einfügen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP und Images - Binärdaten in MySQL-Datenbank einfügen

    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.

    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);
    ?>
    $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.

  • #2
    mysql_real_escape_string() statt addslashes() vielleicht? Welche MySQL-Version?

    Ansonsten würde ich mal als Referenz die Daten zusätzlich inner Datei ablegen, damit man vergleichen kann, was in der DB denn kaputtgeht.
    mod = master of disaster

    Kommentar

    Lädt...
    X