0

メールアドレスを含む単純なtxtファイルがあります。これらのアドレスがデータベースにあるかどうかを確認し、ある場合は削除します。

txt ファイルは csv 形式ではありませんが、すべてのメール アドレスが改行されています。これを行う最善の方法は何だろうと思っています。

4

4 に答える 4

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 に答える
1

手順:

この正規表現は改行に一致します ([^\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 から、またはデータベースで直接クエリを実行できます。バックアップを保持してください。そうしないと、問題が発生する可能性があります。

于 2012-10-24T17:08:05.160 に答える
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

メールを 1 つずつ読み、値を指定して削除クエリを実行します。使用mysql_queryしないでください (テキスト ファイルからの入力を信頼する場合を除きますが、それでも新しいライブラリを使用してください)。レコードが存在する場合は削除されますが、そうでない場合は何も起こりません。終わり。

于 2012-10-24T16:59:38.563 に答える