2016-04-24 110 views
1

我有問題更新我的現場數據。例如,我有數據「跑步者」字段,我想更新字段爲「跑步者,游泳者」。換句話說,我希望我的字段永遠不會刪除previuos數據。但現在更新後,我只能從「跑步者」變成「游泳者」。現場更新witchout丟失previuos現場數據


我現在代碼:

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

感謝您的幫助!對不起英文不好。

+0

您需要在MySQL中使用CONCAT()函數進行字符串連接。見答案。 – fierynot

+0

請注意,您很容易[SQL注入](https://en.wikipedia.org/wiki/SQL_injection)。這是一個很大的安全風險。我建議你轉移到PDO或mysqli來阻止它。 – Bono

回答

0

您需要使用CONCAT()函數在MySQL字符串連接:

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

2

你有錯誤的想法。在關係數據庫中存儲列表的正確方法是使用聯結表。這將每個用戶和每個「字段」有一行。在你的情況下,表格至少有三列UserId,Field,Value

於是,「更新」看起來像:

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

(當然,你應該使用mysqli_和參數化查詢,但是那是另一回事。)

不要進入當SQL提供了一個非常好的方法來存儲列表時,將列表存儲爲字符串的習慣。