我有一个带有电子邮件地址的简单txt文件。我想检查这些地址是否在我的数据库中,如果是这样的话:删除它们。
txt文件不是csv格式,但每个电子邮件地址都在新行上。我想知道最好的办法是什么。
答案 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
(除非你相信文本文件的输入,但即便如此,请使用更新的库)。如果记录在那里,它们将被删除,如果不是没有大事没有任何反应。完成。