Php MySQL来填充Foreach
我正在重建一个我不久前写的时事通讯系统。最初的系统是基于一个平面文件系统,我想把它转换成MySQL。我所剩下的就是重建end函数。我的问题是,我需要做的是为数据库中存储的每封电子邮件使用一个循环。我认为each循环是实现这一点的最佳方法,但是如何将MySQL和foreach结合使用呢?以下是我当前的代码:Php MySQL来填充Foreach,php,mysql,email,newsletter,Php,Mysql,Email,Newsletter,我正在重建一个我不久前写的时事通讯系统。最初的系统是基于一个平面文件系统,我想把它转换成MySQL。我所剩下的就是重建end函数。我的问题是,我需要做的是为数据库中存储的每封电子邮件使用一个循环。我认为each循环是实现这一点的最佳方法,但是如何将MySQL和foreach结合使用呢?以下是我当前的代码: $run = mysql_query("SELECT email FROM newsletter"); foreach ($run as $value) {
$run = mysql_query("SELECT email FROM newsletter");
foreach ($run as $value) {
mail($value, $subject, $_POST['message'], $headers);
}
我尝试了很多不同的方法,但似乎没有任何效果。我甚至试过这样的方法:
$run = mysql_query("SELECT email FROM newsletter");
$email = mysql_fetch_array($run, MYSQL_ASSOC)
$cols = implode (', ', $email);
$run2 = mysql_query("SELECT $cols FROM newsletter");
while($emaillist = mysql_fetch_array($run2, MYSQL_ASSOC)){
foreach ($emaillist as $value) {
mail($value, $subject, $_POST['message'], $headers);
}
}
这是基于我看到的其他几个例子。它不会给出任何错误,但不会发送电子邮件。我将非常感谢您的帮助 您必须获取您的结果。您不能使用foreach,您需要使用while
$handle = mysql_query("SELECT email FROM newsletter");
while ($row = mysql_fetch_assoc( $handle ) )
{
mail( $row['email'], $subject, $_POST['message'], $headers);
}
此伪代码
$run = mysql_query("SELECT email FROM newsletter");
foreach ($run as $value) {
mail($value, $subject, $_POST['message'], $headers);
}
可以正确重写为:
$result = mysql_query("SELECT body, emailaddress, subject FROM emails");
if (!$result) { die('error in mysql_query: '.mysql_error())}
while ($row = mysql_fetch_array($result) {
$body = $row['body'];
$address = $row['address'];
$subject = $row['subject'];
//do stuff with that data.
//never use $_POST data directly, always feed it though `htmlentities`
//before outputting it (screen or email)
//or through mysql_real_escape_string() before inputting it in a DB.
$echo htmlentities($body); //sanitize your output or suffer XSS-attacks
.....
}
如果要将一个SELECT的输出用作另一个SELECT的输入,请不要使用循环,而是使用联接:
SELECT e.body, e.subject, e.header, e.whatever FROM emails e
INNER JOIN newsletter n ON (n.id = e.newsletter_id)
WHERE n.id = 1466
只有电子邮件地址存储在数据库中。我的系统非常基本。其他一切都是预定义的,并设置在我上面添加的非常小的片段之外。由于电子邮件是我唯一需要的东西,我认为蒂姆·G走上了正确的道路。虽然我的主持人刚刚倒下,所以我无法测试任何东西。@Johan是的,这太可怕了-你应该在这个问题上发表评论,并链接到你正在谈论的内容,这样OP就可以了解这个问题。:。。。n/m-刚刚看到你的答案。我考虑到了这一点,并将其添加到我的脚本中。我的网站可能充满了很多安全风险,但我知道所有的功能,也不知道大多数时候什么时候使用它们。我听过很多人告诉我很多不同的事情。@DwightAaronPotvin如果您切换到使用带绑定参数的PDO,您将是注射安全的。Dwight,请在下面选择一个答案,除非您对此主题有进一步的问题。