我正在尝试修改此设置,以便如果有人尝试插入已存在的具有 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;
最佳答案
如果两列都有唯一索引,则不应将重复项插入到表中。
这看起来像表定义(或类似约束)中的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。事实上,您应该改用参数。也许坏字符以某种方式进入了查询字符串。
关于php - 如果存在具有 2 列值的记录,则忽略插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52521998/