如何遍历PDO语句并在if语句上写入数据


How to loop through PDO Statement and write data on if statements

很抱歉用这么复杂的标题,但我真的不知道该怎么解释。我有一个数据库与138个用户,但用户133-138已从数据库中删除用于管理目的。出于业务目的,我不想更改其他人的"用户id"。我写了一些脚本来从MySQL与PDO对象获得销售信息。我在foreach循环中计数PDO的"计数(结果)",当计数等于"result2"时,它将数据写入mPDF中的表中。

这就是问题开始的地方,它工作得很好,直到计数133,那里没有用户。它不会输出任何内容(因为它不应该输出),但是也会跳过剩余的数字。它不会为用户139-146完成循环。我该如何解决这个问题?

下面是我的代码:
$stmt = $con->prepare("select u.user_id, u.fname, u.lname, d.saledate, d.custname, d.straddr, d.city, d.state, d.zip
from users u
inner join dplgalionsales d
on u.lname = d.agent_last_name
where saledate > DATE_SUB(NOW(), INTERVAL 1 MONTH)
order by u.user_id asc, saledate asc");
$stmt->execute();
$res = $stmt->fetchAll();
$count = 1;
foreach($res as $result) {
    $size = count($result['user_id']);
    $mydate = date('m/d/Y');
    $dateadd = date('m/d/Y', strtotime($mydate. ' + 3 days'));  
    $html_table = '<div>Week Ending: ' .$mydate. '<br>Payroll Issued: ' .$dateadd. '</div><br>';
    $html_table .= '<table border="1" cellspacing="0" cellpadding="2" width="100%"><tr><th>Date</th><th>Customer Name</th><th>Address</th></tr>';
    while($count < $size) {
        if($val == $result['user_id']) {
            $html_table .= '<tr><td>' .$result['saledate']. '</td><td>' .$result['custname']. '</td><td>' .$result['straddr']. ' ' .$result['city']. ' ' .$result['state']. ' ' .$result['zip']. '</td></tr>';
        }
        $count += 1;
    }
    $html_table .= '</table>'; //ends HTML table
    $mpdf = new mPDF();
    $mpdf->SetTitle('DPL Galion Sales');
    $mpdf->WriteHTML($html_table);
    if(is_dir('../reports/'.$count.'')) {
        $mpdf->Output('../reports/'.$count.'/DPLOH/'.date('m-d-Y').'_DPLOH_SalesID_'.$count.'.pdf','F');
    }
}
exit;

对不起,我一开始没看懂你的代码。

让它这样

$res = $stmt->fetchAll(PDO::FETCH_GROUP);
foreach($res as $user_id => $user_data) {
    $mydate = date('m/d/Y');
    $dateadd = date('m/d/Y', strtotime($mydate. ' + 3 days'));  
    $html_table = '<div>Week Ending: ' .$mydate. '<br>Payroll Issued: ' .$dateadd. '</div><br>';
    $html_table .= '<table border="1" cellspacing="0" cellpadding="2" width="100%"><tr><th>Date</th><th>Customer Name</th><th>Address</th></tr>';
    foreach ($user_data as $result) {
        $html_table .= '<tr><td>' .$result['saledate']. '</td><td>' .$result['custname']. '</td><td>' .$result['straddr']. ' ' .$result['city']. ' ' .$result['state']. ' ' .$result['zip']. '</td></tr>';
    }
    $html_table .= '</table>'; //ends HTML table
    $mpdf = new mPDF();
    $mpdf->SetTitle('DPL Galion Sales');
    $mpdf->WriteHTML($html_table);
    if(is_dir('../reports/'.$user_id.'')) {
        $mpdf->Output('../reports/'.$user_id.'/DPLOH/'.date('m-d-Y').'_DPLOH_SalesID_'.$user_id.'.pdf','F');
    }
}