Antworten auf deine Fragen:
Neues Thema erstellen

[PHP] Probleme mit Anführungszeichen in Datenbank

Hansi05

Aktives Mitglied

Hallo,

leider stehe ich grade vor einem sehr komischen Problem:
User sollen Daten an die DB senden, es gibt 2 Varianten die ich versucht habe:
Code:
$sql = "INSERT INTO `bla` (`Usercode`, `Wort`, `Mitteilung`) VALUES ('".$_POST['usercode']."', '".$_POST['wort']."', '".$_POST['mitteilung']."')";
oder
Code:
$sql = "INSERT INTO `bla` (`Usercode`, `Wort`, `Mitteilung`) VALUES ('%s', '%s', '%s')";
$sql = sprintf($sql, mysql_real_escape_string($_POST['usercode']), mysql_real_escape_string($_POST['wort']),  mysql_real_escape_string($_POST['mitteilung']));
Bei der ersen Variante kommt folgendes an wenn ich
an die DB sende: ich \
Mit der escape-Funktion sieht das so aus: ich \\
Jetzt frage ich mich wo das Problem liegt, dass keine "" benutz werden können?

mfg
 

G

glukgluk

Guest

AW:
PHP:
 Probleme mit Anführungszeichen in Datenbank[/b]

Vielleicht liegt es am Datentyp oder der Kollation den du für diese Spalte gewählt hast.
Probiere mal mit phpmyadmin das 'ich "mag" dich' in der Spalte einzufügen. Wenn es dort geht, vergleiche jenen query mit dem, den du generierst.

Also ich kann problemlos in eine Spalte mit Typ "Text" und Kollation "utf8_unicode_ci" solche doublequotes einfügen...
 

Fidelis_jpg

Aktives Mitglied

AW:
PHP:
 Probleme mit Anführungszeichen in Datenbank[/b]

Hallo, mit Anführungszeichen hat man oft so seine Probleme!
Nach schlimmer kommt es, wenn der User

[php]ich 'mag' dich
eingibt.

Dein Hintergrund ist es, wie ich es jetzt so verstanden habe, dass der User einen Text einschickt, der dann ausgewertet/ausgegeben wird.

Die einfachste Variante das zu lösen, ist die Sonderzeichen zu konvertieren.

PHP:
$eingabe = ereg_replace('"', """, $eingabe);
$eingabe = ereg_replace("'", "& # 3 9 ;", $eingabe);
( Das & # 3 9 ; musst du zusammen schreiben, aber das Forum hier konvertiert :D es gleich in ' )
Jetzt werden die Zeichen in HTML-Code konveriert.
Natürlich muss das VOR dem schreiben in die DB passieren!
 
Zuletzt bearbeitet:

Hansi05

Aktives Mitglied

AW:
PHP:
 Probleme mit Anführungszeichen in Datenbank[/b]

Also ich kann wenn ich es direkt in phpMyAdmin eintrage geht es. Aber wenn ich es halt mit PHP einfüge dann gehts nicht. Generiert wird:
SET  `Wort`  =  'ich "dich" lieb'

@: ist sicher eine Variante, aber iwie muss es ja auch ohne gehen :o
 
Zuletzt bearbeitet:

netbandit

Aktives Mitglied

AW:
PHP:
 Probleme mit Anführungszeichen in Datenbank[/b]

[quote]
Hinweis: Ist [COLOR=Red][B]magic_quotes_gpc[/B][/COLOR] aktiviert, wenden Sie [COLOR=Black][B]zuerst[/B][/COLOR] [B][COLOR=Red]stripslashes()[/COLOR][/B] auf die Daten an. Das Bearbeiten bereits in irgend einer Form maskierter Daten durch mysql_real_escape_string führt ansonsten dazu, dass bereits Maskiertes doppelt maskiert wird. 
[/quote]Quelle: [URL="http://sg.php.net/manual/de/function.mysql-real-escape-string.php"]PHP: mysql_real_escape_string - Manual[/URL]

Grüße
 

Hansi05

Aktives Mitglied

AW:
PHP:
 Probleme mit Anführungszeichen in Datenbank[/b]

[quote="netbandit, post: 1529833"]Quelle: [URL="http://sg.php.net/manual/de/function.mysql-real-escape-string.php"]PHP: mysql_real_escape_string - Manual[/URL]

Grüße[/quote]
Wenn ich das also richtig verstanden habe muss ich das so machen:
[CODE]        $sql = "INSERT INTO `bla` (`Usercode`, `Wort`, `Mitteilung`) VALUES ('%s', '%s', '%s')";
        $sql = sprintf($sql, stripslashes(mysql_real_escape_string($_POST['usercode'])), stripslashes(mysql_real_escape_string($_POST['wort'])),  stripslashes(mysql_real_escape_string($_POST['mitteilung'])));
        mysql_query($sql);
[/CODE]
Seh ich das richtig? Wenn ja kommt es jetzt mit einem \ an. Sprich ich "mag" dich wird zu ich \.
Klappt also leider auch nicht. :(
 

Hansi05

Aktives Mitglied

AW:
PHP:
 Probleme mit Anführungszeichen in Datenbank[/b]

[CODE]$sql = "INSERT INTO `bla` (`Usercode`, `Wort`, `Mitteilung`) VALUES ('%s', '%s', '%s')";
        $sql = sprintf($sql, mysql_real_escape_string(stripslashes($_POST['usercode'])), mysql_real_escape_string(stripslashes($_POST['wort'])), mysql_real_escape_string(stripslashes($_POST['mitteilung'])));
        mysql_query($sql);[/CODE]

Nichts Neues :o
 

netbandit

Aktives Mitglied

AW:
PHP:
 Probleme mit Anführungszeichen in Datenbank[/b]

Also bei mir funktioniert Dein zuletzt gepostetes Beispiel:



Testformular:

[html]
<form method="POST" action="">
<input type="text" name="usercode"><br>
<input type="text" name="wort"><br>
<input type="text" name="mitteilung"><br>
<input type="submit" name="send" value="speichern">
</form>
[/html]Gib doch einfach mal zum Testen Dein $sql aus :uhm:
 
Zuletzt bearbeitet:

MrAzrael

Nicht mehr ganz neu hier

AW:
PHP:
 Probleme mit Anführungszeichen in Datenbank[/b]

weiss zwar nicht wie aktuell das ganze hier noch ist, aber das erste Beispiel hat nur einen kleinen Dreher drin und müsste eigentlich ausgezeichnet funktionieren mit folgendem Code 

$sql = 'INSERT INTO `bla` (`Usercode`, `Wort`, `Mitteilung`) VALUES ("'.addslashes($_POST['usercode']).'", "'.addslahes($_POST['wort']).'", "'.addslashes($_POST['mitteilung']).'")';

über addslashes wird jedes Zeichen maskiert was bei der Übertragung in die DB Ärger machen könnte und im AusgabeCode dann 

-> stripslashes 

verwenden um die Maskierungen wieder zu entfernen, diese Methode nutz ich zumindest in allen Eingabefeldern wo Text mit " oder ' enthalten sein könnte, allerdings sind bei mir auf dem Server die Magic_Quotes grundsätzlich auf "off" ... sollten sie bei dir auf "on" stehen, sollte eigentlich das "addslashes" nicht verwendet werden sondern die $_POST-Variablen direkt so wie sie ankommen übergeben werden, allerdings im Ausgabefenster dennoch das "stripslashes" verwenden da die maskierten Zeichen wieder entfernt werden müssen
 
Zuletzt bearbeitet:

Hansi05

Aktives Mitglied

AW:
PHP:
 Probleme mit Anführungszeichen in Datenbank[/b]

Fürs Erste hat sich das Problem mehr oder weniger erledigt, soll heißen, dass es für mich erst mal nicht mehr relevant ist.
Ich danke erst mal allen und meld mich wieder, wenns mal wieder nicht so hinhaut wie es soll ;)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben