首页 > 解决方案 > Mysql重复

问题描述

我想避免数据库中的重复条目。

  1. 在 php 中,我在插入发生之前检查记录是否存在。
$lead = $CI->db->get_where(db_prefix(). 'leads', ['fbid' => $sender]);
if ($lead->num_rows() == 0) {
    $CI->social_model->create($sender);
}
  1. 在 mysql 中,我将 UNIQUE 参数设置为 fbid。

问题是有时 facebook 会同时发送相同的查询,因此我的 php 检查失败。我想知道是否有任何方法可以避免同时发送的查询在 mysql 端出现重复。(或欢迎任何其他方式)

标签: phpmysqlcodeigniterfacebook-graph-api

解决方案


您的问题是,您在fbidid列上有一个唯一键。所以当你在表中插入一个新的 Row 时,你有一个唯一的idand组合fbid,因为当你再次插入相同的数据时,你会得到一个更新的id值,所以满足了约束。

您的约束应该只包含fbid

或者,当您需要多个条目时,fbid您应该查看来自 api 的响应中是否有任何其他值可用于约束(如时间戳)


推荐阅读