phpbar.de logo

Mailinglisten-Archive

AW: PHP & MySQL schluckt Daten

AW: PHP & MySQL schluckt Daten

Gloss Mathias mysql_(at)_lists.phpcenter.de
Mon, 9 Apr 2001 12:22:28 +0200


Hallo,

> ----------
> Von: 	Thomas Speck[SMTP:speck_(at)_zfw.uni-hildesheim.de]
> 
> Ab und zu (ungefaehr alle 10 Eintraege in die Datenbank) schluckt 
> irgendetwas Daten. Das Problem tritt bei einer Kombination eine 
> (HTML) textarea mit einer (MySQL) text Spalte auf. Die Benutzer 
> des Formulars sollen im Anmeldeformular (in diesem Fall für die 
> Vortraege) eine Kurzfassung ihres Vortrags eingeben. 
> Dummerweise ist (wie erwaehnt bei ca. jedem 10. Eintrag) der 
> Eintrag in der Abstract Spalte unvollstaendig (nur 1 Zeile, beendet 
> mit einem "\" ).
> 
....

> Das wird dann in einer PHP Datei nochmal angezeigt, damit die 
> Benutzer sicherstellen koennen, das ihre Angaben auch stimmen 
> und gleichzeitig als verstecktes Formularfeld an das naechste PHP-
> Skript uebergeben:
> <input type="hidden" name="abstract" value="<? echo $abstract; ?>">
> <? echo $abstract; ?>
> 
...

> $result = mysql_query("insert into abstracts (..., abstract, ...) 
> values ( ... "', '".$abstract."', '" ...)", $link);
> 
2 Gravierende Probleme habt ihr hierbei:

- Wenn im Abstract Anführungszeichen stehen ("), dann funktioniert die
Weitergabe über das versteckte Formularfeld nicht mehr, da ja hier das
Anführungszeichen die Begrenzung ist.

Schnelle Lösung: Die Daten einfach noch mal in einer Textarea anzeigen.
Saubere Lösung: Vorher alle Anführungszeichen durch was anderes er-
setzen, hinterher wieder zurück.

- Wenn im Abstract Hochkommas (') stehen, dann funktioniert das Speichern
in der Datenbank nicht, da hier das Hochkomma für das Ende des Feldes bei
values (...., '$abstrat',... )   steht.
Saubere und schnelle Lösung:

vor speichern in DB :  $abstract = addslashes($abstract)  ### kann man sich
                                    #   sparen, wenn magic quotes runtime
auf on sind

hinterher beim auslesen : 

$abstract = stripslashes($abstract)

Viele Grüße, Mathias

---
*** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive