2013-05-17 110 views
0

我有這個腳本來發送包含來自我的數據庫的信息的電子郵件。用戶可以在數據庫中擁有1+項目的位置。因此,當我清空與用戶匹配的行時,發送的電子郵件數量就等於他們擁有的行數。所以如果他們在數據庫中有8個項目,它會發送8封電子郵件。每個添加一個項目。所以第一封郵件有一個項目,第二個郵件有兩個項目,依此類推。我正在試圖找到一種簡單的方法,讓它在發送電子郵件之前獲取所有信息,以便客戶只收到一封電子郵件。合乎邏輯的方法是回顯信息,但我不能用php變量來做到這一點。我沒有在下面的代碼中包含查詢和數據庫連接。任何幫助將被愛。Php電子郵件Mysql獲取數組

while ($row = mysql_fetch_array($query)) { 
$Items .= $row['Items']. " - Aisle " .$row['Loc']. "<p>&nbsp;</p>"; 
$to = "[email protected]"; 
$from = "[email protected]"; 
$subject = "Test"; 
$message = "$Items"; 
$headers = "MIME-Version: 1.0 \r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n"; 
$headers .= "From: [email protected]"; 
mail($to, $subject, $message, $headers); 
} 
+1

爲什麼'$ Items'級聯? – Fabio

+0

不帶「。」它只發送數據庫中的一個項目。看起來必須包含該點才能發送多個項目。我還想到了尤金。感謝任何回覆幫助的人。 –

+0

你應該開始它與正常平等,然後連接,否則將無法正常工作 – Fabio

回答

1

只是移動發送功能進行循環:

while ($row = mysql_fetch_array($query)) { 
    $Items .= $row['Items']. " - Aisle " .$row['Loc']. "<p>&nbsp;</p>"; 

} 
if ($Items != '') { 
     $to = "[email protected]"; 
     $from = "[email protected]"; 
     $subject = "Test"; 
     $message = "$Items"; 
     $headers = "MIME-Version: 1.0 \r\n"; 
     $headers .= "Content-type: text/html; charset=iso-8859-1 \r\n"; 
     $headers .= "From: [email protected]"; 
     mail($to, $subject, $message, $headers); 
} 
+0

工作很好。我很感激幫助。 –

+2

@BobStone你應該標記答案是正確的,給他他的代表。 – Kevin

0

當你迭代的項目,你應該只建立一條消息,而不是整個電子郵件..這是很難做的比下面更不知道更多關於您的查詢。無論如何,我會試一試:

$message = ''; 

while ($row = mysql_fetch_array($query)) { 
    $Items = $row['Items']. " - Aisle " .$row['Loc']. "<p>&nbsp;</p>"; 
    $message .= "$Items"; 
} 

$headers = "MIME-Version: 1.0 \r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n"; 
$headers .= "From: [email protected]"; 
mail($to, $subject, $message, $headers); 

注:的是,我不會實現這個代碼。它的意圖是作爲關於如何構造代碼的一個例子。

0

concatenation是不對的,你應該首先聲明的是空變量的循環

$Items = ''; 

之外然後開始你的loop並獲取所有數據你需要連接你的變量

while ($row = mysql_fetch_array($query)) 
{ 
    $Items .= $row['Items']. " - Aisle " .$row['Loc']. "<p>&nbsp;</p>"; 
} 

現在您已準備好發送電子郵件,outside your loop或者您最終將爲每個cicle發送一封電子郵件。所以,你的代碼看起來像這樣

$Items = ''; 
while ($row = mysql_fetch_array($query)) 
{ 
    $Items .= $row['Items']. " - Aisle " .$row['Loc']. "<p>&nbsp;</p>"; 
} 
$from = "[email protected]"; 
$subject = "Test"; 
$message = "$Items"; 
$headers = "MIME-Version: 1.0 \r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n"; 
$headers .= "From: [email protected]"; 
mail($to, $subject, $message, $headers); 

那麼我想你要記住,mysql_*功能已被棄用,所以我會建議你切換到mysqliPDO