0

我有这个小逻辑,我不知道如何解决它。

我的数据库中有这个,命名为email_list5 条记录

然后我有这trackCode15 条记录。

我的问题是我在做一些事情,比如当我点击它时,email all它会收到email_list有 5 条记录的电子邮件,然后 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扩展。相反,应该使用MySQLiPDO_MySQL扩展。

于 2012-08-26T11:20:18.963 回答
1

看起来您$to在每次迭代中都将变量设置为电子邮件 ID,但从不使用它,直到在 while 循环之后。这意味着仅邮寄结果中的最后一个电子邮件 ID。尝试将邮件移动到 while 循环中。

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

PS:使用更好的mysql 扩展PDOMysqli),使用更好的转义,或准备好的语句进行数据插入。看起来您的代码仅用于学习目的,在这种情况下,请始终学习更好的东西。如果它用于生产,它非常脆弱!

于 2012-08-26T11:44:26.280 回答