我正在尝试防止重复输入数据库。我在表单中有两个选择框,它们是从两个表类别和发布者中填充的。如果我将相同的值发送到数据库,则使用下面的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));
答案 0 :(得分:1)
您只需要使用使行变得唯一的列来创建唯一键...
ALTER TABLE records
ADD CONSTRAINT U_records UNIQUE (title,pub);
在此示例中,使用title
和pub
列使所有记录唯一。这意味着可以有多个重复的标题,但是它们需要一个不同的发布者。请修改您的用例,您可以根据需要添加任意多的列,但出于性能方面的考虑,请尽量减少列数。
添加此约束将产生来自MySQL的错误(如果是IRC,则违反约束)。您需要捕获它才能告诉用户。