我有一个带有电子邮件地址的简单 txt 文件。我想检查这些地址是否在我的数据库中,如果是:删除它们。
txt 文件不是 csv 格式,但每个电子邮件地址都换行。我想知道最好的方法是什么。
脚步:
此正则表达式将匹配一个新行
([^\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 或直接在数据库中执行查询,请保留备份,否则您可能会搞砸……希望这会有所帮助……祝你好运
您正在寻找的功能是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
}
<?php
$file = file("emails.txt");
foreach ($file as $email) {
$query = sprintf("DELETE FROM table WHERE email LIKE '%s'", $email);
# execute query
}
?>
一次阅读一封电子邮件,然后使用该值运行删除查询。不要使用mysql_query
(除非您信任来自文本文件的输入,但即便如此,请只使用较新的库)。如果记录在那里,它们将被删除,如果没有什么大不了的,什么也不会发生。完毕。