php - 避免重复输入 mysql 数据库的最佳方法

标签 php mysql

我有一个包含 3 列的表 - id (pk)、pageId (fk)、名称。我有一个 php 脚本,它将大约 5000 条记录转储到表中,其中大约一半是重复的,具有相同的 pageId 和名称。 pageId 和名称的组合应该是唯一的。当我在 php 中循环执行脚本时,防止将重复项保存到表中的最佳方法是什么?

最佳答案

第一步是在表上设置一个唯一的键:

ALTER TABLE thetable ADD UNIQUE INDEX(pageid, name);

然后你必须决定当出现重复时你想要做什么。你应该:

  1. 忽略它?

    INSERT IGNORE INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo");
    
  2. 覆盖之前输入的记录?

    INSERT INTO thetable (pageid, name, somefield)
    VALUES (1, "foo", "first")
    ON DUPLICATE KEY UPDATE (somefield = 'first')
    
    INSERT INTO thetable (pageid, name, somefield)
    VALUES (1, "foo", "second")
    ON DUPLICATE KEY UPDATE (somefield = 'second')
    
  3. 更新一些计数器?

    INSERT INTO thetable (pageid, name)
    VALUES (1, "foo"), (1, "foo")
    ON DUPLICATE KEY UPDATE (pagecount = pagecount + 1)
    

关于php - 避免重复输入 mysql 数据库的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33469618/

相关文章:

php - 检查随机生成的用户名是否唯一

MySQL - 列已存在 : 1060 Duplicate column name '1'

mysql - ---和----在mysql中是什么意思?

mysql - 连接同一个表中的两个外键引用相同的主键

mysql - 创建和运行存储过程的权限

php - 禁用 Woocommerce 中特定类别的购物车项目的其他产品类别

php - 注册和登录密码哈希方法相同但不起作用

php - 如何将变量数据存储到我的数据库中

php - 在粗略数组中搜索名称

php - 如何连接来自不同行的单行列中的列