我目前正在对一个概念进行原型设计,因此我正在使用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语句中引用数组吗?如果不是,关于我应该如何尝试这样做的任何想法?
谢谢,
绳索
答案 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]));
引用,以防您的字段为字符串。