如果数据是唯一的,则向数据库添加数据


Add data to database if data is unique

这里我有一个php PDO代码插入数据到数据库:

if ($_SERVER['REQUEST_METHOD'] == "POST") {
            try {        
                $DBH = new PDO($dsn, $user, $pass, $opt);
                $STH = $DBH->prepare("INSERT INTO track_aktivnosti (datum, id_akt, tabela, id_tabele, naziv) VALUES (:1,:2,:3,:4,:5)");
                $STH->bindParam(':1', $_POST['datum']);
                $STH->bindParam(':2', $_POST['id_akt']);
                $STH->bindParam(':3', $_POST['tabela']);
                $STH->bindParam(':4', $_POST['id_tabele']);
                $STH->bindParam(':5', $_POST['naziv']);
                $STH->execute();
            } catch (PDOException $e) {
                echo $e->getMessage();
            }
            echo "<p>Data submitted successfully</p>";
        }

我如何检查,如果数据存在于数据库跳转到其他数据,如果数据是唯一的在数据库中添加这个数据?

我不想添加重复的数据到我的数据库…这是可能的php pdo?

正确的方法是让数据库防止重复数据进入。您可以使用唯一索引来完成此操作。

假设"唯一"是指所有五列,那么索引将是:

create unique index track_aktivnosti_5cols on
    track_aktivnosti(datum, id_akt, tabela, id_tabele, naziv);

然后,当您尝试向已经存在的表中插入数据时,您将得到一个错误。如果您不希望出现错误,那么有两种简单的方法可以避免错误。较好的是:

INSERT INTO track_aktivnosti(datum, id_akt, tabela, id_tabele, naziv)
    VALUES (:1,:2,:3,:4,:5)
    ON DUPLICATE KEY UPDATE datum = VALUES(datum);

这将在遇到重复值时进行冗余更新。这可以防止错误。另一种方法是:

INSERT IGNORE INTO track_aktivnosti(datum, id_akt, tabela, id_tabele, naziv)
    VALUES (:1,:2,:3,:4,:5);

当重复错误发生时(插入没有发生),这将忽略它。但是它也会忽略所有其他错误