PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [MySQL] Daten anfügen


Gast
2008-03-25, 20:19:59
Hallo,

ich hantiere gerade etwas mit PHP und MySQL rum. Ich weiß, wie man bestehende Datensätze, bzw. deren Felder, ändert (allerdings radikal, nichts anfügen, sondern ersetzen). Aber irgendwie bekomm ich nicht heraus, wie ich etwas an Felder von bestehenden Datensätzen anfügen kann.

Beispiel: im Datensatz mit der id=5 will ich Text ans FeldXY anfügen.

UPDATE Tabelle SET FeldXY = 'einszweidrei' WHERE id=5

Dieser Ausdruck ersetzt aber gleich das ganze Feld und fügt nichts an, der Text, der davor drin war, ist nun komplett ersetzt worden. Wie erhalte ich "alter text einszweidrei"?

Danke

The_Invisible
2008-03-25, 20:25:42
zB


UPDATE Tabelle SET FeldXY = concat(FeldXY, 'einszweidrei') WHERE id=5


siehe auch http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

mfg

Gast
2008-03-25, 21:01:07
Danke dir, funktioniert!

eine letzte Frage:

Mit $referer = $_SERVER['HTTP_REFERER'] hole ich den Refererlink vom Client und schreibe ihn dann in besagte DB. Leider kann ich mysql_real_escape_string nicht darauf anwenden, d.h. $referer = mysql_real_escape_string($_SERVER['HTTP_REFERER']) endet mit "Access denied for user..". Liegt das daran, dass die Variable "dem Server gehört"?

Diese ganzen $_SERVER Daten erst in eine Hilfsvariable zu speichern und darauf dann die Funktion anzuwenden, um das ganze dann in einer endgültigen Variablen zu speichern, ist denke ich nicht die optimalste Lösung.

mfg

Coda
2008-03-26, 02:35:00
Öh das sollte eigentlich funktionieren, da liegt der Fehler wohl an einer anderen Stelle.

Gast
2008-03-26, 18:10:48
Seltsam.
Ich frage mich, ob es überhaut notwendig ist, das $_Server Array mit escape_string abzusichern.. oder meint ihr, jemand kann seinen Refererlink in SQL-Befehle ändern? (selbige Frage für die IP).

Berni
2008-03-26, 20:07:07
Den HTTP-Referrer kann man natürlich beliebig setzen und damit auch was einschleußen!
Die IP aber nicht (zumindest nicht sinnvoll für ne injection); hier dürfte in der Regel ein mysql_real_escape_string unnötig sein.
Wenn dein Befehl nicht geht (kanns mir zwar nicht vorstellen aber na gut) dann probiers mal so:
$referer = $_SERVER['HTTP_REFERER'];
$referer_safe = mysql_real_escape_string($referer);
Achja: mysql_real_escape_string funktioniert erst NACHDEM schon eine SQL-Verbindung aufgebaut wurde. Es muss also NACH dem connect-Befehl zur Datenbank stehen!

Gast
2008-03-26, 20:40:03
Achja: mysql_real_escape_string funktioniert erst NACHDEM schon eine SQL-Verbindung aufgebaut wurde. Es muss also NACH dem connect-Befehl zur Datenbank stehen!

Kopf->Tisch;

So ist das halt, wenn man das Manual nicht ganz liest, danke.