如果记录存在2列的值,则忽略插入

时间:2018-09-26 16:04:37

标签: php mysql sql

我正在尝试对此进行修改,以便如果有人尝试插入已存在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;

1 个答案:

答案 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。实际上,您应该切换到使用参数。也许坏字符以某种方式进入了查询字符串。