基于txt从Mysql中删除记录

时间:2012-10-24 16:58:15

标签: php mysql

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

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

4 个答案:

答案 0 :(得分:1)

步骤:

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

在每一行之后添加一个逗号(或用逗号替换NEWLINE),这样列表就会来自 email1@com.com email2@com.com email3@com.com

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

为beggining和end添加括号: (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或直接在数据库中执行查询,请保留备份,否则您可能搞砸了... 希望这可以帮助... 祝你好运

答案 1 :(得分: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
}

答案 2 :(得分:0)

<?php
$file = file("emails.txt");
foreach ($file as $email) {

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

?>

答案 3 :(得分:-1)

一次阅读一封电子邮件,然后使用该值运行删除查询。不要使用mysql_query(除非你相信文本文件的输入,但即便如此,请使用更新的库)。如果记录在那里,它们将被删除,如果不是没有大事没有任何反应。完成。