发送表单时防止数据库中出现重复条目

时间:2018-12-05 14:59:16

标签: php mysql

我正在尝试防止重复输入数据库。我在表单中有两个选择框,它们是从两个表类别和发布者中填充的。如果我将相同的值发送到数据库,则使用下面的UPDATE方法将复制该条目。我可以进行哪些更改,以便更新后条目不会重复?

    $sqlQuery = "UPDATE records
                INNER JOIN category ON category.catID = records.catID
                INNER JOIN publisher ON publisher.pubID = records.pubID
                SET title=$title, year=$year, desc=$desc, price=$price, pub=$pub
                WHERE recID=$recID"; 

        $stmt = $dbConn->prepare($sqlQuery);
        $stmt->execute(array($sqlQuery)); 

1 个答案:

答案 0 :(得分:1)

您只需要使用使行变得唯一的列来创建唯一键...

ALTER TABLE records
ADD CONSTRAINT U_records UNIQUE (title,pub);

在此示例中,使用titlepub列使所有记录唯一。这意味着可以有多个重复的标题,但是它们需要一个不同的发布者。请修改您的用例,您可以根据需要添加任意多的列,但出于性能方面的考虑,请尽量减少列数。

添加此约束将产生来自MySQL的错误(如果是IRC,则违反约束)。您需要捕获它才能告诉用户。