2012-10-08 24 views
0

我目前正在構建一個概念原型,所以我使用PHPMailer來生成/發送電子郵件。我很快會轉向SendGrid之類的東西,但目前這不是問題。我需要發送電子郵件給數據庫中的每個用戶,但電子郵件將根據存儲在數據庫中的元素(特定於個人用戶)進行自定義。發送自定義電子郵件給所有用戶 - PHP代碼問題

我有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錯誤。 「用戶」數據庫包含字段:cid,email,fname,lname。我不能在sql語句中引用數組嗎?如果沒有,我應該如何嘗試做到這一點的任何想法?

感謝,

繩索

回答

0

查詢應該是

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

已包含'$row['cid'],那是錯誤的。而foreach循環中的;也是一個錯誤清除。

+0

謝謝,這已經擺脫了T_STRING錯誤,但仍然無法正常工作。我做了一個回聲「測試」;在這條線之後,它並沒有出現。因此,它似乎掛在某些原因。任何想法爲什麼它可能掛? – OrangeTwine

+0

在'try'和'catch'部分都回聲。你會得到你的執行進行到哪裏。 –

1

你有一個「;」在您的每一行,刪除它,它應該工作

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])); 

報價,以防您的字段是一個字符串。

相關問題