【问题标题】:how to check mysql for duplicates with php如何使用php检查mysql是否有重复项
【发布时间】:2017-12-09 01:20:54
【问题描述】:

我需要一种方法来检查数据库中是否已经存在单词,如果已经存在,则不必将其推送到数据库中,如果该单词尚未在其中,则必须将其推送到数据库中。
这是一个 MYSQL 数据库,我必须在 PHP 中完成,这就是我目前所得到的。

$result = array_count_values(explode(" ", $filter));
arsort($result);
foreach ($result as $word => $frequency)
{
    if (!in_array($word, [" ", ""]))
        query("words", "INSERT INTO Woord (woord) VALUE (?)",[$word], false);
}
query("words" "SELECT WHERE")

【问题讨论】:

  • 在列上添加唯一约束?

标签: php mysql database import duplicates


【解决方案1】:

你有两个选择:

替换

REPLACE INTO table
SET column = 'example'

如果记录存在,这将覆盖,如果不存在,它将创建它。

插入忽略

INSERT IGNORE INTO table
SET column = 'example'

如果已经存在,这将忽略查询,如果不存在,它将创建它。

您的 php 查询应如下所示:

"INSERT IGNORE INTO ID142118_ascii.Woord (woord) VALUES (".$word.")"

【讨论】:

  • 您好,感谢您的快速回复,这将如何查看我的代码?
  • 我已经编辑了我的帖子,如果它适合你,请接受答案。
  • 这一段查询将代替带有 query("words" "SELECT WHERE") 的部分
  • 我不明白你的代码,但让我把它简单化:遍历你的单词,并为每个 $word 运行查询,如果单词已经存在,它不会将它添加到数据库中它应该将其添加到数据库中。
  • 经过一些测试,我发现我的数据库中仍然出现错误,它不想跳过数据库中已经存在的单词
【解决方案2】:

对表中的“word”列设置唯一约束。 然后你可以让你的 php 脚本插入尽可能多的重复单词,它只会失败。

您可以在查询中添加“忽略重复”部分,也可以忽略您将得到的错误。

我认为这将是最容易做到的。

编辑: 顺便说一句,我能想到很多包含你要剥离的角色的几个词:“foto's”、“zee-eend”等

--

如何制作唯一索引:

ALTER TABLE asciiwoorden
    ADD UNIQUE INDEX somename (Woord);

【讨论】:

    猜你喜欢
    • 2011-03-09
    • 2013-07-02
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多