mySQL - 如果存在,不要将相同的数据插入表中的行

时间:2016-04-01 01:33:12

标签: php mysql

我有会员表。它包括这些行;

姓名 - 姓氏 - 年龄 - 朋友

我有一个脚本,当有人添加为好友时,会将名称值(对于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已经在“朋友”行中,则不应该添加它。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

只需更改where子句:

UPDATE members
    SET friends = CONCAT(friends, '".$myname."')     
    WHERE name = '".$name."' AND
          find_in_set('".$myname."', friends) = 0;

现在说了,让我试着说服你,这是一个非常糟糕的数据库设计。你应该有一个MemberFriends表,每个成员一行,每个朋友一行。这是将其存储在关系数据库中的正确方法。它被称为联结表。