Vinzenz Mai: Zufallsbild in Datenbank oder Datei schreiben

Beitrag lesen

Hallo Poison,

Du hast die nächste Runde in der Kontextproblematik eingeläutet :-)

Mit folgendem Codeschnipsel habe ich es geschafft, ein Zufallsbild aus einem Ordner zu generieren:

Einrücken macht Deinen Code lesbarer.

while (false != ($file = readdir ($handleordner)))
{
    if ($file != "." && $file != "..")
    {
        array_push($foto,"<img src = '../schokofroesche/$file' border = '0'>");

Einfacher mit gleicher Wirkung:

#         foto[] = "<img src = '../schokofroesche/$file' border = '0'>";

Warum willst Du statt des Pfades zur Datei gleich das ganze

img-Element abspeichern. Speichertest Du nur den Pfad, würde

Dir das Kontextproblem gar nicht auffallen.

Beachte: Jeder Eintrag in Deinem Array enthält eine Zeichenkette,

#          die einfache Anführungszeichen enthält.

#          Bei der Syntax des img-Elementes hast Du übrigens auch
#          noch einen Fehler drin: zuviele Leerzeichen.

}
}

[...]

Nur will PHP mir das ausgewählte Bild nicht in die Datenbank schreiben.
Ich habe folgendes eingegeben:

[code lang=php]
$aendern = "UPDATE rustleoaks Set
schokofrosch1='$foto[0]' WHERE benutzername='" . mysql_real_escape_string($_SESSION["username"]) . "'";

hier an dieser Stelle könntest Du Dir Dein SQL-Statement, das heißt den

Inhalt der Variablen $aendern anzeigen lassen. Du solltest Dein Problem

sofort erkennen, denn die Zeichenkette sieht wie folgt aus:

  
~~~sql
  
UPDATE rustleoaks Set schokofrosch1='<img src = '../schokofroesche/dateiname.des.bildes' border = '0'>' WHERE benutzername = ...

Damit in Deinem Statement das einfache Anführungszeichen richtig maskiert wird, musst Du - wie Du schon gelernt haben solltest - den Inhalt von $foto[0] ebenfalls mit mysql_real_escape_string() behandeln.

Du bringst den Inhalt dieser Variablen in einen SQL-Kontext. Diesen Wechsel hast Du nicht beachtet.

Freundliche Grüße

Vinzenz