2016-04-24 9 views
1

Ich habe Probleme beim Aktualisieren meiner Felddaten. Zum Beispiel habe ich Feld mit Daten "Läufer" und ich möchte Feld zu "Läufer, Schwimmer" aktualisieren. Mit anderen Worten möchte ich, dass mein Feld nie vorher Daten löschen würde. Aber jetzt nach dem Update komme ich nur von "Läufer" zu "Schwimmer".Feldaktualisierung witchout verlorene Felddaten


Mein Code jetzt:

function updateUserField($username, $field, $value) { 
    $q = "UPDATE " . TBL_USERS . " SET " . $field . " = '$value' WHERE username = '$username'"; 
    return mysql_query($q, $this->connection); 
} 

Dank für die Hilfe! Und Entschuldigung für schlechtes Englisch.

+0

Sie müssen die CONCAT() - Funktion in MySQL für String-Verkettung verwenden. Siehe Antwort. – fierynot

+0

Bitte beachten Sie, dass Sie anfällig für [SQL-Injektion] sind (https://en.wikipedia.org/wiki/SQL_injection). Dies ist ein großes Sicherheitsrisiko. Ich rate dir, zu PDO oder mysqli zu gehen, um es zu verhindern. – Bono

Antwort

0

Sie benötigen die Funktion CONCAT() in MySQL für String-Verkettung zu verwenden:

UPDATE TBL_USERS SET $field = CONCAT($field, '$value') WHERE username = $username;

2

Sie die falsche Idee. Die richtige Methode zum Speichern von Listen in einer relationalen Datenbank besteht in der Verwendung einer Junction-Tabelle. Dies würde eine Zeile pro Benutzer und pro "Feld" haben. In Ihrem Fall hätte die Tabelle mindestens drei Spalten UserId, Field, Value.

Dann wird die "update" würde wie folgt aussehen:

insert into UserFields (UserId, Field, Value) 
    values ($UserId, @Field, $Value); 

(Natürlich sollten Sie mysqli_ und parametrisierte Abfragen verwenden, aber das ist eine andere Sache.)

Nicht in die bekommen die Gewohnheit, Listen als Zeichenfolgen zu speichern, wenn SQL eine sehr gute Methode zum Speichern von Listen bietet.

Verwandte Themen