mysql / php Prob: Anführungsstriche in mySQL eintragen.

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Chrissi007
Mitglied
Beiträge: 114
Registriert: 08.02.2003 12:43
Kontaktdaten:

mysql / php Prob: Anführungsstriche in mySQL eintragen.

Beitrag von Chrissi007 »

Hallo, :D

Ich habe mir gerade ein Script gebastelt, das unter anderem ein Auswahlmenü - nennen wir es mal "Menü1" - enthält.

Das Menü1 besorgt sich die Werte und Beschriftungen aus einer table in der mySQL Datenbank. -> Klappt ohne Probleme.

Der User erhält nun die Möglichkeit einen von diesen Werten auszuwählen. Allerdings enthält jeder Wert mindestens 1 Paar Anführungsstriche. Möchte Ich nun die Auswahl in die Datenbank übernehmen, so erscheint lediglich der Text bis dahin, wo die Anführungsstriche anfangen.

Eigentlich müsste Ich das ja escapen bzw. die Funktion addslashes() verwenden, aber Ich weiß einfach nicht, wie Ich das in meinem Fall anwenden soll.

Das Menü1 sieht momentan so aus: (Teilweise mit Dreamweaver erstellt)

Code: Alles auswählen

<select name="menu1">
           <?php
do {  
?>
           <option value="<?php echo $row_menu1['beschriftung']?>" ><?php echo $row_menu1['wert']?></option>
           <?php
} while ($row_menu1 = mysql_fetch_assoc($menu1));
?>
         </select>

Über ein Formular wird das ganze dann abgesendet und anschließend in die DB eingetragen, allerdings hört die Eintragung dort auf, wo die Anführungsstriche sind. Wie krieg Ich das jetzt hin, dass der ganze Wert inkl. aller Sonderzeichen übernommen wird?


Besten Dank im Vorraus :D
Gruß, Chrissi :D
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Wenn du die Daten abspeicherst (genau da wird das relevant), speicherst du eben nicht

Code: Alles auswählen

$variable
sondern

Code: Alles auswählen

addslashes($variable)
ab. That's all :-D

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Dazu musst Du unmittelbar vor dem INSERT oder UPDATE in die Tabelle den Wert mit addslashes($variable) umschliessen und nach dem Auslesen aus der Tabelle, spätestens jedoch vor der Übergabe an das Template mit stripslashes($variable) wieder zurückformatieren.
Dann klappt es auch mit dem Speichern.

EDIT: Ein Tick zu langsam.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Das Spielchen beim Auslesen kannst du dir eigentlich sparen - das Ding wird richtig ausgegeben :-)

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Chrissi007
Mitglied
Beiträge: 114
Registriert: 08.02.2003 12:43
Kontaktdaten:

Beitrag von Chrissi007 »

Hmm... Das versteh Ich jetzt nicht so ganz.

Also Ich hab den Code, den Ich per Dreamweaver bekommen habe nun so modifiziert (fettgedruckt):
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = addslashes(sprintf("INSERT INTO page_pilot_detailsdb (anmeldungsdatum, name, wohnort, email, icq, vermerk, rang, rang_anhang, flugzeug, flugzeug_bild, staffel, schwarm, schwarm_position, auszeichnungen) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['anmeldungsdatum'], "text"),
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['wohnort'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['icq'], "text"),
GetSQLValueString($_POST['vermerk'], "text"),
GetSQLValueString($_POST['rang'], "text"),
GetSQLValueString($_POST['rang_anhang'], "text"),
GetSQLValueString($_POST['flugzeug'], "text"),
GetSQLValueString($_POST['flugzeug_bild'], "text"),
GetSQLValueString($_POST['staffel'], "text"),
GetSQLValueString($_POST['schwarm'], "text"),
GetSQLValueString($_POST['schwarm_position'], "text"),
GetSQLValueString($_POST['auszeichnungen'], "text")));
Wenn Ich das Formular dann Absenden möchte erhalte Ich folgenden Error:
You have an error in your SQL syntax near '\'Chrissi\', \'Egling\', \'webmaster@virtual-jabog32.de\', \'158450792\', \'Webs' at line 1

Bin heute und gestern den ganzen Nachmittag an dem Formular dran gesessen, krieg das aber irgendwie nicht so richtig hin. Wäre echt kuhl wenn einer von euch mir weiterhelfen könnte :)
Gruß, Chrissi :D
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Du darfst auch nicht den ganzen SQL-Befehl durchlaufen lassen sondern nur die einzelnen Werte...

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Chrissi007
Mitglied
Beiträge: 114
Registriert: 08.02.2003 12:43
Kontaktdaten:

Beitrag von Chrissi007 »

Meinst du die Werte hier drin anpassen? :)
$insertSQL = sprintf("INSERT INTO page_pilot_detailsdb (anmeldungsdatum, name, wohnort, email, icq, vermerk, rang, rang_anhang, flugzeug, flugzeug_bild, staffel, schwarm, schwarm_position, auszeichnungen) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
Falls ja:

Einfach beispielsweise name und wohnort durch "addslashes(name), addslashes(wohnort)," ersetzen? :D Aber das geht ja dann eigentlich nicht, weil der Befehl addslashes() dann innerhalb der Anführungsstriche vom sprintf() Befehl drin ist, oda?

Und sry für meine Fragen. Ich kenn mich in php und mySQL noch nicht so gut aus - Hab mir zwar schon Bücher gekauft und lese die fleißig aber ab und zu muss mich mein Dreamweaver immer unterstützen bzw. ihr ;) :)
Gruß, Chrissi :D
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Das wird dann wohl über den sprintf zu machen sein:

Code: Alles auswählen

sprintf($sql, addslashes($value1), ...)
Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Chrissi007
Mitglied
Beiträge: 114
Registriert: 08.02.2003 12:43
Kontaktdaten:

Beitrag von Chrissi007 »

Oki danke hat geklappt :D :D
Gruß, Chrissi :D
Antworten

Zurück zu „Coding & Technik“