PHP PDO获取结果

PHP PDO获取结果,php,mysql,foreach,pdo,Php,Mysql,Foreach,Pdo,我有以下脚本,运行良好,但我认为 a) 它是丑陋的 b) 在脚本运行后,它不执行我需要的操作 就气候而言,脚本应按如下方式工作: 1) SQL从注册日期在上个月内的给定表中选择所有代理,并按代理编号分组,其中计数大于1,按注册日期升序排列。简而言之,返回上个月注册了多个会员的代理列表 2) 返回结果后,整个列表将通过电子邮件发送给我自己(不确定如何完成此操作),代理奖励表将更新(注册多个成员的代理将获得奖励) 为了实现这一点,我的脚本目前背对背地运行foreach循环(我讨厌这样),以便分解必要

我有以下脚本,运行良好,但我认为

a) 它是丑陋的

b) 在脚本运行后,它不执行我需要的操作

就气候而言,脚本应按如下方式工作:


1) SQL从注册日期在上个月内的给定表中选择所有代理,并按代理编号分组,其中计数大于1,按注册日期升序排列。简而言之,返回上个月注册了多个会员的代理列表

2) 返回结果后,整个列表将通过电子邮件发送给我自己(不确定如何完成此操作),代理奖励表将更新(注册多个成员的代理将获得奖励)

为了实现这一点,我的脚本目前背对背地运行foreach循环(我讨厌这样),以便分解必要的字段数据

如有任何改进流程的建议,我们将不胜感激

脚本:
这将去掉第二个foreach,并(希望-我还没有测试)在一个选择中获取代理的电子邮件地址:

...
$sql = $db->query("SELECT tablename.AGENT AGENT, agent.EMAIL EMAIL, 
                   FROM tablename, agent 
                   WHERE enroll_date > DATE_SUB(CURDATE(),INTERVAL 1 MONTH) AND tablename.AGENT = agent.AGENT 
                   GROUP BY tablename.AGENT 
                   HAVING COUNT(tablename.AGENT) > 1 
                   ORDER BY enroll_date ASC");             
$result = $sql->fetchALL(PDO::FETCH_ASSOC);
foreach($result as $row)
{
  $sql2 = "UPDATE agent_prizes 
           SET prize=?, method=? 
           WHERE AGENT = '{$row["AGENT"]}'";
...

“已注册一名以上会员的会员”。。。你的having子句不应该是“having COUNT(AGENT)>1”吗?@Stacey Richards-你是对的。我只是在输入问题时错误地输入了上面的代码,但在我的网站上是正确的(那里的规则实际上也不同)。不管怎样,这不一定会影响我的问题。
...
$sql = $db->query("SELECT tablename.AGENT AGENT, agent.EMAIL EMAIL, 
                   FROM tablename, agent 
                   WHERE enroll_date > DATE_SUB(CURDATE(),INTERVAL 1 MONTH) AND tablename.AGENT = agent.AGENT 
                   GROUP BY tablename.AGENT 
                   HAVING COUNT(tablename.AGENT) > 1 
                   ORDER BY enroll_date ASC");             
$result = $sql->fetchALL(PDO::FETCH_ASSOC);
foreach($result as $row)
{
  $sql2 = "UPDATE agent_prizes 
           SET prize=?, method=? 
           WHERE AGENT = '{$row["AGENT"]}'";
...