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

标签 php mysql

我有一个成员(member)表。它包括这些行;

姓名 - 姓氏 - 年龄 - friend

我有一个脚本,当有人添加为 friend 时,它会将名称值(例如:约翰)添加到“ friend ”行。它将名字添加到 friend 行。

$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 已经在“ friend ”行中,则不应添加它。

正确的做法是什么?

最佳答案

只需更改 where 子句:

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

话虽如此,让我尝试让您相信这是一个非常糟糕的数据库设计。您应该有一个 MemberFriends 表,其中每个成员一行,每个 friend 一行。这是将其存储在关系数据库中的正确方法。它称为联结表。

关于php - mySQL - 不要将相同的数据插入表中的行(如果存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36346590/

相关文章:

mysql - 如何在以下查询中使用 where 子句中的 `group` 进行比较?

php - CSRF token 多选项卡问题

php - 访问另一个对象内部的对象的方法

php - 使用 PHP 插入多行

php - 我的 PDO 函数出错

c# - 当我从数据库表中删除所有行时,GridView 不显示

php - SVN 存储库新手问题

javascript - 隐藏 api key ,php

c# - 使用 Entity Framework 枚举到字符串

sql - MySQL查看: How do I set default value of a calculated field to 0?