php - 如果某些值尚不存在,则尝试使用 PHP 和 mySQL 将 UNIQUE 值插入数据库

标签 php mysql duplicates

目前,我只是将 SQL 列设置为 UNIQUE 来阻止重复条目,但现在如果另一列不同,我需要允许重复条目。我不确定执行此操作的最佳方法。本质上我想做如下的事情,但它只是多次插入相同的值。

// $link  is being outputted from a external RSS feed //
// $name and $location are account holder names //

$name = 'Bob';

$sql = "SELECT link FROM `table` WHERE name='$name'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $db_link = $row['link'];

        if($link == $db_link){
            // Pass and do nothing
        }else{
            // Insert into database if 3 values do not exist already
            $sql2 = "INSERT INTO `table` (link, name) VALUES ('$link','$name')";

            if (mysqli_query($conn, $sql2)) {
                echo "record created successfully";
            } else {
                //echo "Error: " . $sql2 . "<br>" . mysqli_error($conn);
            }
        }
    }
}

所以基本上我试图避免显示每个帐户持有人的重复项,但不同的帐户持有人可以在数据库中拥有相同的链接。抱歉,如果这令人困惑.. 如果名称不同,则允许链接重复。 我看过类似的问题,但不明白所解释的方法以及它们是否是我正在寻找的正确解决方案。谢谢!

最佳答案

您想要在多个列上使用唯一索引

CREATE UNIQUE INDEX index_name ON table_name (link,name);

ALTER TABLE table_name ADD UNIQUE (link, name);

关于php - 如果某些值尚不存在,则尝试使用 PHP 和 mySQL 将 UNIQUE 值插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57468436/

相关文章:

PHP 左连接不显示结果

php - 向客户添加 PDF - laravel 5.7

MySQL 获取最后 N 行并查找百分比

python - 在 csv 文件中标记重复项

php - 如何仅使用一个 sql 查询打印帖子和评论

php - 如何使用正确的 "headers"回显 JSON 双重嵌套对象文字

php - 如何组织一组模块化 div 以齐平

docker - Dockerfile 之间的重复

java - 如何从与其他表匹配的 1 个表中删除一些重复行

php - MySQL查询返回两个数组项,为什么?