 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
23.08.2002, 15:55
|
#1
|
|
TP-Member
Registriert seit: May 2002
|
[PHP-MySql] Wozu addslashes() etc. ?
Hallo zusammen,
ich lese hin und wieder, dass man Texte (z.B. aus Formularfeldern) vor dem schreiben in die Db mit addslashes() bearbeiten soll.
Und beim Auslesen wieder stripslashes().
Ich habe diese Funktionen nie angewand und bis jetzt keine Probleme bekommen. Wozu sind die also gut?
Kann mir das einer von Euch erklären?
Gruß
McClaine
|
|
|
23.08.2002, 16:16
|
#2
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
Hi !! Das ist ganz einfach... mal ein Beispiel:
PHP-Code:
$string = "Hallo Leut's wie schaut's aus?";
mysql_query = ("INSERT INTO tabelle SET text = '$string'");
Das würde nicht funktionieren. Da der Query dann so aussehen würde:
Code:
INSERT INTO tabelle SET text = 'Hallo Leut's wie schaut's aus?'
...wenn du addslashes() vorher auf den string anwendest werden die ' oder die " excapet d.h ein \ wird davor gesetzt.
Hoffe das hilft...
Gruss Jan
|
|
|
23.08.2002, 16:19
|
#3
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
..kleiner Nachtrag... wenn Du Text aus einer Textarea an ein Script übergibst wird im Post oder irgendwo dazwischen  die Funktion auf den Text schon angewand. Das siehst du, wenn du z.B. eine Textarea an sich selber schickst:
PHP-Code:
<form action="<?=$PHP_SELF;?>>
<textarea name="deintext"><?=$deintext;?></textarea>
<input type="submit" value="und los">
</form>
|
|
|
23.08.2002, 16:26
|
#4
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
is mir eine sql-reform entgangen?
PHP-Code:
INSERT INTO tabelle SET text =

__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
23.08.2002, 16:29
|
#5
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
"addslashes" ist aber unnötig, wenn der Provider die magic_quotes aktiviert hat - dann wird dies nämlich automatisch gemacht. Davon sollte man aber niemals einfach so ausgehen 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
23.08.2002, 16:32
|
#6
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
Zitat:
Original geschrieben von Longfang
is mir eine sql-reform entgangen?
PHP-Code:
INSERT INTO tabelle SET text =
|
...denke schon... http://www.mysql.com/doc/en/INSERT.html (das 3te Syntax-Besipiel?)
|
|
|
23.08.2002, 16:37
|
#7
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
habs selber grad probiert.
kaum zu glauben. bitte bitte sag, dass das mysql spezifisch ist!
denn soweit ich mich entsinnen kann, ist die ansi konforme ausgabe eines insert, der mit 'values'.
entschuldige, dass ich an dir gezweifelt hab
scheinbar arbeite ich zu viel am ms-sql. (bei dem gehts übrigends NICHT)
lf
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
23.08.2002, 16:48
|
#8
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
...ähm... ob das ansi-konform ist weiß ich um ehrlich zu sein nicht.  Aber das ist für bestimmte Querys oder Scripe ein super Vorteil... Du packst deine Varis in ein Hashtable lässt einmal ne' Schleife drüberlaufen und dein Query ist fast komplett.
Ich hab das aber selber auch eher durch Zufall mitbekommen... habs einfach mal gemacht... und siehe da es hat geklappt
...ich zweifle übrigends auch oft an mir 
Gruss Jan
|
|
|
23.08.2002, 16:58
|
#9
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Hey, das würde mir auch helfen. Ich hab da ein Formular mit 80 (!) Feldern, die alle in eine Tabelle reingeschrieben werden müssen ... die entsprechende Query zu basteln ist sehr zeitaufwändig ... nehmen wir mal an, die Formularfelder entsprechen den Feldern in der Datenbank, wie muss eine eintsprechende Schleife aussehen, um eine Query "generieren" zu lassen?
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
23.08.2002, 17:08
|
#10
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
benenne deine Felder erstmal als Array um... so sparst du dir die konvertierung in PHP. z.B. so:
Code:
<input type="text" name="deinarray[elementname]" size="20">
Auf der folgenden Seite machst du dann folgendes (weiß es jetzt nur mit register globals auf off:
PHP-Code:
foreach($deinarray AS $key => $val) {
$tmpsql .= "$key = '$val',";
}
$tmpsql = substr($tmpsql,0,strlen($tmpsql)-1);
mysql_query("UPDATE tabelle SET $tmpsql");
...das sollte es gewesen sein... aber wie gesagt... register globals = off...
Gruss Jan
|
|
|
23.08.2002, 17:20
|
#11
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Meinst Du nicht eher register_globals auf ON?
Deine Version wird nicht gehen, wenn sie OFF sind ... es müsste dann doch so (oder ähnlich) aussehen:
foreach($_POST AS $key => $val) {
$tmpsql .= "$key = '$val',";
}
Oder? Ich arbeite ausschliesslich mit register_globals=off, sprich: ohne globale Variablen (alles ganz brav mit $_POST,. $_GET, $_SESSION usw).
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
23.08.2002, 17:24
|
#12
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
ähm.. ja klar... register globals = on
das müsste dann bei dir irgendwie so aussehen:
PHP-Code:
foreach($_POST[deinarray] AS $key => $val) {
$tmpsql .= "$key = '$val',";
}
|
|
|
23.08.2002, 17:31
|
#13
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Jo, habs getestet und es funktioniert wunderbar soweit ... es hat aber einen kleinen Nachteil - die Daten können nicht weiter "manipuliert" werden.
Beispiel: wenn ich drei Felder habe für ein Geburtsdatum, und ich es nach dem Submit kombinieren und in ein Feld schreiben will, könnte ich das mit dieser "automatischen" Variante vergessen.
Nun, danke dennoch - diese Schleife ist recht nützlich 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
23.08.2002, 17:36
|
#14
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
Du kannst doch deine Felder vor der Schleife bearbeiten... bzw das Array manipulieren... und dann die Schleife fahren...
|
|
|
23.08.2002, 17:43
|
#15
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Jo, könnte ich ... 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 01:39 Uhr.
|
 |