如何停止获取数据并在下一个指针处重置结果?

问题描述 投票:0回答:0

我有以下查询来检索延迟归还的书籍。效果很好:我得到了用户和签名会员借的每本书。

$stmt = $pdo->prepare(" SELECT .....

FROM $t_books 
LEFT JOIN $t_resas ON $t_books.id_book=$t_resas.id_book 
LEFT JOIN $t_users ON $t_users.id_user=$t_resas.id_user 
LEFT JOIN $t_members ON $t_members.pseudo=$t_resas.name 

WHERE $t_resas.resa_back='N' AND $t_resas.date_end < CURRENT_DATE

ORDER BY $t_members.pseudo ASC, $t_resas.date_end DESC ");

我还有2个功能,一个是拆分数据,显示结果:

function display_break_users($nameM) {
echo "++++++++++ BREAK ++++++++++";
}

和一封电子邮件给会员,作为迟归书籍的提醒:

function email_to_member($allWarningsOnBooks) {
/* HERE : many lines to set up of email */
$send_mail = mail($email_m, $subject, $message_body, $headers);
}

现在,我运行查询:

$stmt->execute();
$results = $stmt->fetchAll();

foreach ($results as $row) {
$name_resa = $row['name_resa'];

if ($nameM != $name_resa) {
    display_break_users($name_resa); /* split the data and add a line break for new user */
    $nameM = $name_resa;
    email_to_member($allWarningsOnBooks); /* email each member its related data */
}

/* HERE : get the results and print them = OK */
echo "[ my results here ]"; 

$allWarningsOnBooks .= "[ my results here ]";
/* HERE IS MY PROBLEM */
/* I can't free the results and reset the pointer to the next user */
/* only the first member gets the proper data, the following get it aggregated */

} // end foreach loop

$stmt->closeCursor();

我可以拆分数据并打印它,使其看起来像这样:

1. USER A
  1. book 1 (to user John A.)
  2. book 15 (to user Alice B.)
  3. book 19  (to user Bob C.)
  ...
2. USER B
  1. book 2 (to user Sally D.)
  2. book 11 (to user Betty E.)
  3. book 13 (to user Dave F.)
  ...

现在,我的问题是:我无法获取每个数据块并将其通过电子邮件发送给其成员。

用户 A 应该收到一封包含所有数据的电子邮件:“1. book 1(给用户 John A.) - 2. book 15(给用户 Alice B.) - 3. book 19(给用户 Bob C. )", user B with "1. book 2 (to user Sally D.) - 2. book 11 (to user Betty E.) - 3. book 13 (to user Dave F.)" 等等在。但是第一个成员拥有用户#1 的正确数据,但是第二个成员拥有来自成员#1 和成员#2 的数据。

问:在我循环的某个时刻,我在哪里以及如何收集一个用户的数据以通过邮件发送?如何停止/重置结果以在下一个指针处获取数据?

php pdo
© www.soinside.com 2019 - 2024. All rights reserved.