检查数据库中是否存在name(姓)



我有一个包含名字的表的数据库,在名字列中的一些例子:

  • "John Doe"
  • "Kevin De Bruyne"

所以你会注意到一个名字包含多个单词。

我也得到了一个电子表格列表的名字,这是那里的结构:

  • "能源部的约翰"
  • "DE BRUYNE Kevin"

(姓氏大写并放在名字前面)

我的问题是如何编写一个查询,检查我的电子表格中的名称是否已经在数据库中。

我尝试了一些基本的查询,但我无法弄清楚,所以我想我需要正则表达式来分割单词?我该怎么做呢?

这就是我要分割的词,我怎么能建立查询?谢谢你!

(b[^s]+b) (splits "My name is Onovar" into "My","name","is" and "Onovar")

*数据库结构:

  • 数据库名称:mydb
  • <
  • 表:人/gh>
  • 专栏:名称

所以我需要这样的东西:如果'名称从电子表格'不存在于表的人,插入'电子表格的名称'到表的人*

您可以这样做。

$array = explode(" ", $string);
$names = implode(",", $array);
$query = "SELECT * FROM persons WHERE id IN ($names)";

则使用PDO或mysqli运行查询。

编辑

误解了问题。以上解决方案使用php你真正需要的是所有的名字在一个逗号分隔的列表中,然后你可以使用这个查询

"SELECT * FROM persons WHERE id IN ($names)"

其中$name是逗号分隔的列表。

好的,我找到了。

所以我把我的数据从我的excel在一个数组。

$array = ["name1 firstname1","name2 firstname2",...];

i遍历每个元素,拆分单词(空格)

foreach ($array as $element){
        $subex =  explode(' ', $element);

然后将最后一个元素复制到前面

array_unshift($subex , end($subex));

并删除最后一部分所以我有这个数组:"firstname,name"

array_pop($subex);

接下来,我打破数组,得到一个像这样的字符串:"firstname name"

$naam = implode(' ', $subex);

之后我把所有的

都改成小写

$low = strtolower($naam);

除了每个单词的第一个字母,它们必须是大写的

$up = ucwords($low);

之后,我创建了我的myqsl查询,跳过双精度并添加新的

echo 'INSERT IGNORE INTO politici
    SET naam = "'.$up.'",
    partij_id = 23;';
    echo '<br />';
}

并且我必须确保每个name列都是唯一的

相关内容

  • 没有找到相关文章

最新更新