我正在爲新添加的評論設計一個非常簡單的電子郵件通知系統。它的工作原理是這樣的:PHP - 在循環中多次使用mysql_fetch_assoc()。
- 環通項目的用戶
- 爲每個用戶,遍歷寫在最後時刻所有評論
- 如果有不被用戶寫任何評論,他們推到數組
- 如果評論數組不爲空,發送電子郵件給用戶
下面是一些代碼:
<?php
$users_query = mysql_query("SELECT * FROM users");
$comments_query = mysql_query("SELECT * FROM comments c, users u WHERE c.date > DATE_SUB(NOW(), INTERVAL 1 HOUR) and c.user_id = u.id");
while ($user = mysql_fetch_assoc($users_query)) {
$commentsArr = array();
while ($comment = mysql_fetch_assoc($comments_query)) {
if ($comment['email'] != $user['email']) {
array_push($commentsArr, $comment['comment']);
}
}
// send $commentsArr by email to $user['email']
}
?>
問題是,同一個mysql_fetch_assoc
不能在單個頁面上多次使用。我試着用正在重置的mysql_data_seek($comments_query, 0);
指針但只是把下面的錯誤:
Warning: mysql_data_seek() [function.mysql-data-seek]: Offset 0 is invalid for MySQL result index 4 (or the query data is unbuffered)
是否有處理這種其他方法嗎?所有其他有類似問題的人都被建議加入他們的表格,而不是將他們分開。我不認爲我可以這樣做,因爲我必須先通過所有用戶,所以如果我加入他們,我將擁有比用戶更多的行。
無論如何,有沒有辦法在循環內循環評論?
你不應該使用mysql_,因爲它是貶值,使用mysqli_代替或PDO – Enjoyted