php - 如果记录存在 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;
解决方案
如果两列都有唯一索引,则不应将重复项插入表中。
这看起来像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。实际上,您应该切换到使用参数。也许坏字符以某种方式进入查询字符串。
推荐阅读
- android - 在android中使用Google api for Photos java客户端
- sql-server - 从 SQL Server 中的存储过程调用函数
- php - Laravel SSL 与 MySQL 的连接不起作用
- spring-boot - Spring boot千分尺统计-详细说明
- ios - 如何让 App Store Reviewers 使用 Stripe 测试 App?
- c# - 用字典创建交叉表结构
- python - 使用 tplquad 对具有 3 个以上参数的函数进行三重积分
- bash - 如何处理文件夹结构中与模式匹配的所有文件?
- project-reactor - 如何使 expectComplete() 事件失败并抛出错误?
- java - 如何从存储过程获取多个结果列表到 Spring Boot 端