0

我有一个带有电子邮件地址的简单 txt 文件。我想检查这些地址是否在我的数据库中,如果是:删除它们。

txt 文件不是 csv 格式,但每个电子邮件地址都换行。我想知道最好的方法是什么。

4

4 回答 4

1

脚步:

此正则表达式将匹配一个新行 ([^\n]*\n+)+

在每行后添加一个逗号(或用逗号替换 NEWLINE),以便列表变为 email1@com.com email2@com.com email3@com.com

email@com.com,email2@com.com,email3@com.com

在开头和结尾添加括号: (email@com.com,email2@com.com,email3@com.com)

添加以下sql:

DELETE FROM database.schema.table WHERE email_address IN (email@com.com,email2@com.com,email3@com.com);

执行SQL.

您可以从 php 或直接在数据库中执行查询,请保留备份,否则您可能会搞砸……希望这会有所帮助……祝你好运

于 2012-10-24T17:08:05.160 回答
1

您正在寻找的功能是fgets()

<?php
$emails = array();

if( ! $fh = fopen('file.txt', 'r') ) { die('could not open file'); }
while( $buffer = fgets($fh, 4096) ) {
    $emails[] = $buffer;
}
fclose($fh);

foreach($emails as $email) {
    $query = sprintf("DELETE FROM table WHERE email LIKE '%s'", $email);
    // do the query
}
于 2012-10-24T17:16:17.143 回答
0
<?php
$file = file("emails.txt");
foreach ($file as $email) {

      $query = sprintf("DELETE FROM table WHERE email LIKE '%s'", $email);
      # execute query
}  

?>
于 2012-10-24T17:38:46.960 回答
-1

一次阅读一封电子邮件,然后使用该值运行删除查询。不要使用mysql_query(除非您信任来自文本文件的输入,但即便如此,请只使用较新的库)。如果记录在那里,它们将被删除,如果没有什么大不了的,什么也不会发生。完毕。

于 2012-10-24T16:59:38.563 回答