我正在尝试对此进行修改,以便如果有人尝试插入已存在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;
答案 0 :(得分:0)
如果两列都具有唯一索引,则不应将重复项插入表中。
这看起来像是表定义(或类似约束)中的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。实际上,您应该切换到使用参数。也许坏字符以某种方式进入了查询字符串。