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

标签 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;

最佳答案

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

这看起来像表定义(或类似约束)中的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/

相关文章:

python - 保持与 MySql 数据库的连接打开多长时间是可以的?

mysql - 从一个表的一列中选择属于不同列和表的值

sql - 在sqldeveloper中获取完整结果

php - 如何从多个数组中添加不同的元素

php - SHOW FIELD FROM 中的语法错误

javascript - 需要检测何时在 iframe 中按下按钮,JavaScript

C#:如何使文本框的自动完成源是数据库或datagridview列

mysql - SQL 加入多个条件

mysql - SQL 中基于 bool 实体的关系(图 TableView )

php - 检索 php session 值之后用作变量?