0

私はそれを解決する方法がわからないというこの小さなロジックを持っています。

email_list5 レコードという名前のデータベースにこれがあります

それから私はこのtrackCode15のレコードを持っています。

私の問題は、クリックするemail allemail_list5つのレコードを持つメールが届き、trackCodeがそれらのメールに送信するようなことをしていることです。

私はこのコードを持っています

$sql = mysql_query( "SELECT * FROM code WHERE track = '$_POST['track']' " ) or die ( mysql_error() );
$row = mysql_fetch_array( $sql );
$subject = 'You have received your code';
$message = '
Your code is '.$row['trackCode'].'

Please click here to activate your code - click here -

management
';

$header = "From: noreply@fastindexer.com \r\n";
$header .= 'Content-type: text/html' . "\r\n";

$sqlemail = mysql_query( "SELECT * FROM email_list ORDER BY rand() LIMIT 15" ) or die ( mysql_error() );
while ( $rowemail = mysql_fetch_array( $sqlemail ) ) {
  $to = $rowemail['emails'];
}
$send_contact = mail($to,$subject,$message,$header);

私のコードの何が問題なのか教えてもらえますか?それは私の while ステートメントですか?

私が解決しようとしているのは、電子メールを送信するときに、異なる5つの電子メールに送信することですtrackCodes

私は自分のプロセスとロジックで迷っていると思います。

みんなありがとう

4

2 に答える 2

2

次のように変更してみてください。

$sqlemail = mysql_query("SELECT * FROM email_list ORDER BY rand() LIMIT 15") or die ( mysql_error());

while($rowemail = mysql_fetch_assoc($sqlemail))
{
    mail($rowemail['emails'], $subject, $message, $header);
}

この:

$sql = mysql_query("SELECT * FROM code WHERE track = '$_POST['track']'") or die (mysql_error());

次のようにする必要があります。

$sql = mysql_query("SELECT * FROM code WHERE track = '".mysql_real_escape_string($_POST['track'])."'") or die (mysql_error());

重要:

ただし、 mysql拡張機能の使用はお勧めできません。代わりに、MySQLiまたは PDO_MySQL拡張機能を使用する必要があります。

于 2012-08-26T11:20:18.963 に答える
1

各反復で変数を電子メールIDに設定しているように見えますが$to、whileループの後まで決して使用しません。つまり、結果の最後のメール ID のみがメールで送信されます。メールを while ループに移動してみてください。

while ( $rowemail = mysql_fetch_array( $sqlemail ) ) {
    $to = $rowemail['emails'];
    $send_contact = mail($to,$subject,$message,$header);
}

PS: より優れたmysql 拡張機能( PDOまたはMysqli ) を使用するか、より適切なエスケープを使用するか、データ挿入用の準備済みステートメントを使用してください。あなたのコードは学習のみを目的としているように見えます。その場合、常により良いものを学びましょう。本番用の場合、非常に脆弱です!

于 2012-08-26T11:44:26.280 に答える