【问题标题】:setting up warning for duplicate entries in MySQL database为 MySQL 数据库中的重复条目设置警告
【发布时间】:2012-05-25 19:03:33
【问题描述】:

我有一张有 5 列的表格。 ID、姓名、姓氏、公司和头衔。

所以我现在要做的是在提交过程中检查重复条目,比较姓名和姓氏组合匹配。这应该会导致重复条目的警报以及继续并将其保存到数据库中的选项,或者取消内容的提交。

提前致谢。

【问题讨论】:

    标签: php mysql database


    【解决方案1】:

    你有这个选项:

    • 在“(name, surname)”上设置常规索引
    • 在每次插入之前,检查“(name, surname)”组合是否已经存在
    • 如果不存在,请正常执行插入 [这里由您来考虑在这 1 毫秒时间内 sb else 可能已完成相同插入的风险]
    • 如果 EXISTS AND 强制模式,无论如何添加行
    • 如果存在且不强制模式,请根据您的规范继续客户端
    • 如果客户端仍要保存,请在强制模式下重复操作。

    如果你真的认为这是值得的,这里的替代方法是无论如何插入行,然后检查是否有以前的行。如果客户想保留记录,请留下,否则删除。

    rgds

    【讨论】:

    • 选项 #2 不是原子操作:“元组存在?不。[另一个进程将它插入这两者之间] 根据错误继续!”至少需要使用事务。
    • 元组的?他使用的是 PHP,而不是 Python。
    • 唯一选项不允许您按照答案中的要求“保存”。所以在它被标记之前从你的答案中删除它;)。
    • 抱歉,我在两次会议之间再次阅读太快 :-) 这次我试图提供更好的答案。谢谢大家收看。
    【解决方案2】:

    这就是我尝试过的,但是还没有弄清楚问题中提到的可选选择代码。

    $query = "INSERT INTO phptablo (Name, Surname, Company, Title) VALUES ('$name', '$surname', '$company', '$title')";
    
    $sql = "SELECT Name AND Surname FROM phptablo WHERE Name = '$name' AND Surname= '$surname'";
    
    $result = mysql_query($sql);
    $count = mysql_num_rows($result);
    $row = mysql_fetch_array($result);
    
    echo "$sql" . '<br/><br/>'; 
    
    echo "$result" . '<br/><br/>';
    
    if ($count==0)
    {
        if (!mysql_query($query)) 
        {
            die('Error: ' . mysql_error());
        }
    
        echo "Successful Entry!";
    }
    else 
    {
        echo "Duplicate Entry found!";
    }
    

    我是 全新 到 php 和 MySQL,所以不能真正充分利用您非常感谢的答案。有没有机会添加一些代码让我可以选择是否保存它?

    我现在所处的位置,如果检测到重复条目,则不会将输入保存到数据库中,否则会立即存储。如果我写的代码无论如何都不能以保存重复的方式进行更改,我也可以在保存后使用某种屏幕显示重复的内容,以便可以编辑、删除它们等。

    【讨论】:

      猜你喜欢
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多