INSERT INTO funktioniert nicht mehr

Am besten gewöhnst du dir an, stets deine SQL Statements mit mysql_real_escape_string abzusichern, jedenfalls wenn es um solche Eingaben geht.
Sowie die vollständigen Inserts mit den Spaltenkennzeichnungen zu verwenden (auch wenn es jetzt noch ohne diese klappt, und du mehr tippen musst). Damit ersparst du dir in Zukunft aber viel Ärger ;)
 
Hmmm, scheint doch nicht so einfach zu sein das Problem. Jetzt habe ich die Daten auf meinen Server geladen und nun machen die Scripte bei denen ich mysql_real_escape_string benutze total Mist, bzw. machen das, was sie machen sollen. Nun wird nämlich jedes " in ein \" umgewandelt. Da ich HTML-Code in einer Datenbank speichere und dann auf der Seite (z.B. als Newsletter) ausgebe, kommt da kompletter Müll raus. Habe mysql_real_escape_string jetzt erstmal überall wieder rausgenommen auf dem Server und es funktioniert. Woran liegt das, dass es hier lokal so t und auf nem anderen Server wieder so?! Liegt das an den PHP/mySQL Versionen?



Beste Grüße und gute Nacht,
Rene
 
Naja aber es ist doch schlichtweg quatsch den String erst mit slashes in die DB zu schreiben um sie beim Auslesen wieder zu entfernen oder nicht?
 
Also, ich habe mir auch ein Script gemacht was alle Sparchen speichern soll. http://pastebin.niceaccess.de

Und ich verwende für die Code bei MySQL einfach nur Text. Das heisst beim ausgeben verwende ich das so:

PHP:
<? echo stripslashes(trim($result['code']))); ?>

Das speichern in der Datenbank machst du wie du es kennst. Ganz normal als wenn du einen namen speichern willst ;)
Also ohne gleich ausfallend zu werden, wäre es besser sich mit der Manual von http://www.php.net ein wenig auseinanderzusetzen.

Das musste ich auch. ;)
 
Zuletzt bearbeitet:
Hallo Bomberpilot,
ich programmier nun schon seit über 5 Jahren in PHP, also wie ich welche Funktion nutze weiß ich denke ich. Die Sache ist nur die, dass bis jetzt noch nie dieses Problem aufgetreten ist und ich möchte dieses Problem eigentlich nicht umgehen, sondern vielmehr wissen, warum es denn nicht mehr so funktioniert, zumindest auf meinem lokalen Server?!


Liebe Grüße
Rene
 
Naja aber es ist doch schlichtweg quatsch den String erst mit slashes in die DB zu schreiben um sie beim Auslesen wieder zu entfernen oder nicht?

Nicht direkt.

Du verwendest in deinem String "-Quotes, und deinen Query machst du ebenfalls mit "-Quotes. Im String hast du sie escaped, aber sobald du sie in dein Query lädst, sind sie wieder unescaped. D.h. mySQL denkt, dass nach dem "-Quote aus deinem String schluss ist, und dann bricht es eben ab.

Und das verhindert [phpf]mysql_real_escape_string[/phpf]
 
Zurück