無論你的表有一欄登錄,如果郵件已發送,這是我希望看到發生在這裏:
if (sendMail($subject, $to, $body, $from, $cc))
{
echo 'Mail for ' . $to . ' has been sent.<br />';
//Update database so only one email is sent...
$sql = "INSERT INTO TRACKING_TABLE
(feed_id, recipient_id, isSent)
VALUES
($feed_id, $recip_id, 'Y')";
$query = mysql_query($sql);
} else
{ ...
...這將意味着更新:
$feed_sql = "SELECT id, title, description, rssDate
FROM feed
WHERE MATCH (title) AGAINST ('" . $rows['suburb'] . "')
AND NOT EXISTS(SELECT NULL
FROM TRACKING_TABLE tt
WHERE tt.feed_id = feed.id
AND tt.recipient_id = $Recipient_id
AND tt.issent = 'Y')
GROUP BY pubDate
ORDER BY pubDate DESC
LIMIT 1";
...確保您的查詢沒有收到那些已成功發送的查詢。
DROP TABLE IF EXISTS `example`.`tracking_table`;
CREATE TABLE `example`.`tracking_table` (
`feed_id` int(10) unsigned NOT NULL default '0',
`recipient_id` int(10) unsigned NOT NULL default '0',
`issent` char(1) NOT NULL default '',
PRIMARY KEY (`feed_id`,`recipient_id`),
FOREIGN KEY (feed_id) REFERENCES pager(id),
FOREIGN KEY (recipient_id) REFERENCES recipients(id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
好的,但正如Brad所建議的那樣。我正在將郵件發送給幾個收件人。這將標記爲發送,如果它只發送到1個地址,我說得對嗎? – Dean 2010-08-28 23:49:12
@Dean:如果「TRACKING」表包含兩列 - feed_id和recipient_id,則不適用。這兩列應該是主鍵,或者至少是一個唯一的約束,以確保這對值是唯一的,但仍允許將recipient_id關聯到多個提要,反之亦然。 – 2010-08-28 23:51:48
好的,太好了。我會試試:) – Dean 2010-08-28 23:53:32