メールアドレスを含む単純なtxtファイルがあります。これらのアドレスがデータベースにあるかどうかを確認し、ある場合は削除します。
txt ファイルは csv 形式ではありませんが、すべてのメール アドレスが改行されています。これを行う最善の方法は何だろうと思っています。
探している関数は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
}
手順:
この正規表現は改行に一致します
([^\n]*\n+)+
リストが
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 から、またはデータベースで直接クエリを実行できます。バックアップを保持してください。そうしないと、問題が発生する可能性があります。
<?php
$file = file("emails.txt");
foreach ($file as $email) {
$query = sprintf("DELETE FROM table WHERE email LIKE '%s'", $email);
# execute query
}
?>
メールを 1 つずつ読み、値を指定して削除クエリを実行します。使用mysql_query
しないでください (テキスト ファイルからの入力を信頼する場合を除きますが、それでも新しいライブラリを使用してください)。レコードが存在する場合は削除されますが、そうでない場合は何も起こりません。終わり。