我有会员表。它包括这些行;
姓名 - 姓氏 - 年龄 - 朋友
我有一个脚本,当有人添加为好友时,会将名称值(对于ex:John)添加到“friends”行。它将名称添加到朋友行。
$myname = ",John,"; // the adder
$name = ",Marry,"; // the person to be added as a friend
mysql_query("UPDATE members SET friends = CONCAT(friends, '".$myname."')
WHERE name='".$name."'") or report();
但是,如果值不存在,我需要添加。例如,如果John已经在“朋友”行中,则不应该添加它。
这样做的正确方法是什么?
答案 0 :(得分:1)
只需更改where
子句:
UPDATE members
SET friends = CONCAT(friends, '".$myname."')
WHERE name = '".$name."' AND
find_in_set('".$myname."', friends) = 0;
现在说了,让我试着说服你,这是一个非常糟糕的数据库设计。你应该有一个MemberFriends
表,每个成员一行,每个朋友一行。这是将其存储在关系数据库中的正确方法。它被称为联结表。