0

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

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

“用户”表包含以下字段: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 错误。“用户”数据库具有以下字段:cid、电子邮件、fname、lname。我不能在 sql 语句中引用数组吗?如果没有,关于我应该如何尝试这样做的任何想法?

谢谢,

缠绕

4

3 回答 3

1

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

于 2012-10-08T01:31:59.463 回答
0

查询应该是

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

你已经包含'在里面$row['cid'],那是错误的。在 foreach 循环中;也有一个错误删除它。

于 2012-10-08T01:31:36.623 回答
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]));

引号,以防您的字段是字符串。

于 2012-10-08T01:43:41.777 回答