• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mysql enfernt Backslashes

xXxPeterPanxXx

Neues Mitglied
Guten Abend,
ich habe ein ernstes Problem.

Ich schreibe Tutorials in einer Textarea. Dann werden diese Tutorials in der MySql Datenbank gespeichert.

Jedoch habe ich das Problem das die Backslashes entfernt werden. Bei einem PHP Code ein großer Fehler.

Beispiel:

So schreibe ich das in die Textarea:

echo "<input type=\"text\" name=\"text\" />"

So wird es in der Datenbank gespeichert.

echo "<input type="text" name="text" />"

Wie kriege ich es hin das der Code genauso gespeichert wird wie ich ihn schreibe?

MfG xXxPeterPanxXx
 
Indem du den Wert $_POST['text'] nicht einfach so in die Datenbank einträgst, sondern noch mit mysql_real_escape_string().
PHP:
$sql = "INSERT INTO tabelle (spalte) VALUES ('".mysql_real_escape_string($_POST['text'])."')";
 
Das habe ich auch schon gedacht und ausprobiert, aber es will einfach nicht.

Die Codes werden immer ohne Backslashes abgespeichert.

So sieht der Query aus:

PHP:
$updates = "UPDATE eintraege SET name = '".$_POST['name']."', nameurl = '".$_POST['nameurl']."', kategorie = '".$_POST['kategorie']."', tutorial = '".$_POST['tutorial']."', code = '".$_POST['code']."', time = '".$time."' WHERE id = ?";
$update = $db->prepare($updates);
$update->bind_param('i', $_GET['erweitern']);
$update->execute();
$update->close();

MfG xXxPeterPanxXx
 
echo "<input type=\"text\" name=\"text\" />" ergibt <input type="text" name="text" />. Wo sollten da Backslashes sein?
 
An der Abfrage liegt es nicht. Der Code kommt ja schon falsch in der Datenbank an.
schon klar, trotzdem ist es heutzutage sogar bei Microsoft üblich potentielle Fehler abzufangen. In deinem Fall ist egal welcher Fehler auftritt das verhalten unspezifiziert, d.h. du weißt nicht was passiert.

Wenn du bind für alle werte verwendest, sollte der Code 1:1 in der Tabelle ankommen wie er eingeben wurde.
 
schon klar, trotzdem ist es heutzutage sogar bei Microsoft üblich potentielle Fehler abzufangen. In deinem Fall ist egal welcher Fehler auftritt das verhalten unspezifiziert, d.h. du weißt nicht was passiert.

Wenn du bind für alle werte verwendest, sollte der Code 1:1 in der Tabelle ankommen wie er eingeben wurde.
Wie?

Du meinst ich soll nicht nur die WHERE Angebe binden sondern auch alle anderen Variablen?
 
Ich kann kein PHP aber in Perl wird das so gemacht, ja. Genau dafür gibt es doch die Methoden, dass du keine Werte mehr maskieren musst, das passiert automatisch.
 
schon klar, trotzdem ist es heutzutage sogar bei Microsoft üblich potentielle Fehler abzufangen. In deinem Fall ist egal welcher Fehler auftritt das verhalten unspezifiziert, d.h. du weißt nicht was passiert.

Wenn du bind für alle werte verwendest, sollte der Code 1:1 in der Tabelle ankommen wie er eingeben wurde.
Ich bin ein Idiot.:mrgreen:

Danke euch beiden!

MfG xXxPeterPanxXx
 
Zurück
Oben