【发布时间】:2017-02-18 13:09:01
【问题描述】:
所以我是这样使用 PHP 的:
if(isset($userID)) {
$premium = $con->prepare("
SELECT Email
FROM tblName as d
WHERE Rank = $rank and Type = $type
");
$premium->execute();
$premium->bind_result($email);
} else {
echo "There is no User ID detected, try to refresh browser.";
}
while ($premium->fetch()) {
# SUBJECT (Subscribe/Remove)
$subject = "New Resume";
# RESULT PAGE
$location = "http://www.website.com";
$sender = "info@website.com";
# MAIL BODY
$message = '<html><body>';
$message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
$message .= "</table>";
$message .= "</body></html>";
$cc = "ss@gmail.com";
$headers = "From: " . $sender . "\r\n";
$headers = "BCC: " . $cc . "\r\n";
$headers .= "Reply-To: ". strip_tags($_POST['Email']) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$to = $email;
mail( $to, $subject, $message, $headers) or die ("Mail could not be sent.");
}
header("Location: http://website.com/");
die();
mysqli_close($link);
但这不会为每个选定的用户发送电子邮件。我如何正确地使用循环?我应该使用foreach 还是改进while 循环?在这种情况下,我该如何申请arrays?有人可以让我走正确的路吗?谢谢!
【问题讨论】:
-
您通过在 sql 中直接嵌入变量而错过了
prepared statements的要点 - 使用占位符并在 pdo 中的mysqli或bindParam中使用bind_param分配变量。最初的headers被$headers ="BCC: " . $cc . "\r\n";的第二行覆盖 -
你的代码有很多错误
-
@mohade 谢谢你的回复,我想听听任何关于如何改进代码的建议。
-
$to = $email 从哪里获得 $email 以及它的内容...第二个 $headers 覆盖了它需要的第一个 (.)
-
@mohade
$email来自bind_results
标签: php mysql sql email mysqli