向所有用户发送自定义电子邮件 - PHP代码问题

时间:2012-10-08 01:27:34

标签: php sql

我目前正在对一个概念进行原型设计,因此我正在使用PHPMailer来生成/发送电子邮件。我会尽快转向类似SendGrid的东西,但目前这不是问题。我需要向数据库中的每个用户发送一封电子邮件,但电子邮件将根据存储在数据库中的元素进行自定义(特定于个人用户)。

我让PHPMailer工作从数据库中提取字段并发送邮件。但是,当我尝试添加遍历所有用户并为每个用户生成电子邮件的能力时,我似乎遇到了一些PHP / SQL问题。

“users”表包含以下字段:cid,email,fname,lname。我需要拉动cid来提取数据库中的其他信息,我需要电子邮件,所以我知道在哪里发送消息。这是我的SQL / PHP:

require_once('/PHPMailer_v51/class.phpmailer.php');
include $_SERVER['DOCUMENT_ROOT'] . '/NG/includes/db.inc.php';

try
{
$sql = 'SELECT * FROM users';
$result = $pdo->prepare($sql);
$result->execute();
}

catch (PDOException $e)
{
$error = 'Error fetching user information.';
include 'error.html.php';
exit();
}

 foreach ($result as $row);
 {
  try
  {
    $high_result = $pdo->query('SELECT title FROM book WHERE topic = "high" and cid = $row['cid']');
  }
  catch (PDOException $e)
  {
  $error = 'Error fetching fields from database!';
  include 'error.html.php';
  exit();
  }
  .... the rest of the for statement....

我在$ high_result行上遇到意外的T_STRING错误。 “users”DB包含以下字段:cid,email,fname,lname。我无法在sql语句中引用数组吗?如果不是,关于我应该如何尝试这样做的任何想法?

谢谢,

绳索

3 个答案:

答案 0 :(得分:1)

你有一个“;”在你的foreach行,删除它,它应该工作

答案 1 :(得分:0)

查询应该是

$high_result = $pdo->query('SELECT title FROM book WHERE topic = "high" and cid = $row[cid]');

您已将'包含在$row['cid']内,这是错误的。并且在foreach循环中;也会删除错误。

答案 2 :(得分:0)

foreach ($result as $row) // The semicoln here is not required
 //... The rest of the statements

$high_result = $pdo->query("SELECT title FROM book WHERE topic = "high" and cid = '. $pdo->quote($row[cid]));

引用,以防您的字段为字符串。