首页 > 解决方案 > 如果记录存在 2 列的值,则忽略插入

问题描述

我正在尝试对此进行修改,以便如果有人尝试插入已经存在 pageID 和 displayID 的记录,它将简单地忽略 INSERT 并重新加载页面,实际上不做任何更改。

我的 page_id 和 display_id 列上有一个唯一索引,但它仍然在此处插入重复项。

如何解决此问题以正确防止插入重复项而忽略插入请求?

$pageID = $_GET['pageID'];
$displayID = $_GET['displayID'];

$assignPage = "
INSERT IGNORE INTO display_to_page(page_id, display_id)
Values( '".$pageID."', '".$displayID."')
";

$performAssign = $mysqlConn->query($assignPage);


header("Location: displayPage.php?displayID=".$displayID);
exit;

标签: phpmysqlsql

解决方案


如果两列都有唯一索引,则不应将重复项插入表中。

这看起来像unique(page_id, display_id)在表定义(或类似的约束)或:

create unique index unq_display_to_page_2 on display_to_page(page_id, display_id);

请注意,这些约束/索引在display_to_page表上。

在数据库中有这样的索引/约束,MySQL 将不允许重复进入表。

您还应该检查传递到字符串中的 id。实际上,您应该切换到使用参数。也许坏字符以某种方式进入查询字符串。


推荐阅读