echo $begrüßung;
Um einen String in eine mySQL-Datenbank zu schreiben, schütze ich diesen zuvor mit addslashes().
adslashes ist nicht wirklich dafür geeignet, da es weniger Zeichen behandelt, als für MySQL erforderlich sind. Nutze mysql_real_escape_string().
Sehe ich mir den Inhalt der Datenbank sogleich an, sehe ich, dass die Backslashes erfolgreich hinzugefügt wurden um ersichtlich sind.
Wenn du sie in der Datenbank siehst, hat sicherlich noch das Feature Magic Quotes zugeschlagen, welches dafür sorgt, dass GPC-Werte schon von vorn herein mit adslashes() behandelt wurden.
Wenn du einen SQL-Befehl notierst ist das ein Text. Möchte man Bezeichner von Nutzdaten unterscheiden muss man eins von beiden besonders markieren. In dem Fall werden Nutzdaten-String-Werte in Anführungszeichen eingefasst. Nun kann es vorkommen, dass in diesem String Anführungszeichen vorkommen, die nicht das Ende des Strings markieren sollen sondern zum Inhalt gehören. Deshalb gibt es die Syntax, diesen ein \ voranzustellen. Ebenso müssen ein paar weitere Zeichen behandelt werden. PHP wollte es den Programmieren einfach machen und hat dafür Magic Quotes erfunden. Doch die behandeln sämtliche Eingabedaten und nicht nur diejenigen, die im SQL-String landen sollen, und wie gesagt, berücksichtigt dieses Feature auch noch zu wenig Zeichen. Ab PHP 6 wird es dieses Feature nicht mehr geben. Bis dahin ist meine Empfehlung, Magic Quotes auszuschalten oder seine Auswirkungen am Scriptanfang rückgängig zu machen und für die ordentliche Maskierung der Werte mittels extra dafür vorgesehener Funktionen vorzunehmen.
Diese Maskierung wird nur auf dem Weg hin zur Datenbank benötigt, denn rückwärts kommen sie nicht über eine Text-Schnittstelle.
[Problembeschreibung]
Was macht PHP da beim Einlesen von Dateien, dass dieses Phänomen auftritt? Hat irgendwer Ideen wo der Hund begraben sein könnte?
Große Teile deines Problems sollten sich von selbst erledigt haben, wenn du obige Erklärung versteht und die Magic Quotes und das addslashes() zu Gunsten von mysql_real_escape_string() hinter dir lässt.
echo "$verabschiedung $name";