【问题标题】:PHP MySQL Insert Ignore Inserting Too Much DataPHP MySQL Insert 忽略插入太多数据
【发布时间】:2012-11-05 08:23:52
【问题描述】:

我有一个流量交换,每次查看一个网站时,我都希望它插入到一个表格中,如下所示:

-用户
-网站

用户默认为 1,我不插入,因为我认为对于 INSERT IGNORE,您需要一个保持不变的列。

我当前的查询:

$db->Query("INSERT IGNORE INTO `surfed_site` (site) VALUES('".$sit['id']."')");

我有大约 85 人在线,但在 1 秒刷新后,它从表格中的 0 变为 750,这是不可能的,因为用户必须在插入网站之前查看 20 秒。

我认为我的 INSERT IGNORE 不起作用,谁能指导我看看我做错了什么?

【问题讨论】:

  • 你确定 surfed_site 是主键吗?
  • surfed_site 是表,我该如何检查?
  • 抱歉误读...我的意思是网站
  • site 需要有一个唯一/主键才能触发插入忽略。如果它是一个普通的索引,或者根本没有索引,没有什么可忽略的,mysql 会简单地插入你的新值。
  • 检查 phpmyadmin 或其他显示表结构的工具,如果它不是键,它将不起作用

标签: php mysql insert


【解决方案1】:

您确定该站点是主键吗?

为了让 INSERT IGNORE 正常工作,您必须将插入的值声明为主/唯一键

如果您使用 IGNORE 关键字,则在执行 INSERT 语句时发生的错误将被视为警告。例如,如果没有 IGNORE,复制表中现有 UNIQUE 索引或 PRIMARY KEY 值的行会导致重复键错误并且语句被中止。使用 IGNORE,行仍然没有插入,但不会发出错误。

http://dev.mysql.com/doc/refman/5.5/en/insert.html

如果不存在,则添加主键:

ALTER TABLE surfed_site ADD PRIMARY KEY (site);

【讨论】:

  • 更改表客户添加主键(ID);
猜你喜欢
  • 2014-12-07
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 2016-02-22
  • 2020-03-02
  • 1970-01-01
  • 2013-08-02
  • 1970-01-01
相关资源
最近更新 更多