PHP PDO sonuçlar almak

0 Cevap php

Ben iyi çalışır aşağıdaki komut dosyası var ama bence

a) çirkin;

b) komut çalıştırıldıktan sonra ben gerekenleri yapmaz.

Aşağıdaki gibi Utlimately, komut çalışması gerekir:

1) SQL sayısı artan okullaşma tarihe göre 1'den büyükse ajan sayısına göre gruplanmış, kayıt tarihi son bir ay içinde belirli bir tablodaki tüm maddeleri seçer. Kısacası İngilizce, bir önceki aya birden fazla üye kaydoldu ajanların listesini döndürür.

Sonuçlar döndürülür sonra 2), tüm liste kendime e-postayla (henüz bunu gerçekleştirmek için nasıl emin değil) ve ajan ödül tablo) birden fazla üye bir ödül almak kayıt (ajanlar güncellenir.

Bunu başarmak için, benim senaryom şu anda gerekli alan verileri kırmak için (nefret) foreach döngüleri arka arkaya çalışır.

Sürecinin iyileştirilmesi için herhangi bir önerileri takdir edilmektedir.

SCRIPT:

<?php

    try {   
            $db = new PDO('mysql:host=localhost;dbname=dbname', 'username', 'password');
            $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $db->beginTransaction();

            $sql = $db->query("SELECT AGENT FROM tablename WHERE enroll_date > DATE_SUB(CURDATE(),INTERVAL 1 MONTH) GROUP BY AGENT HAVING COUNT(AGENT) >= 0 ORDER BY enroll_date ASC");             

            $result = $sql->fetchALL(PDO::FETCH_ASSOC);
            foreach($result as $key=>$val) {
                foreach($val as $ball=>$agentid) {

                    $sql2 = "UPDATE agent_prizes SET prize=?, method=? WHERE AGENT = '$agentid'";

                    $stmt = $db->prepare($sql2);
                    $stmt->execute(array("Y", "COMP"));


                    require('../phpmailer/class.phpmailer.php');

                    $mail             = new PHPMailer();
                    $mail->Username   = "user@domain.com";
                    $mail->Password   = "";
                    $mail->SetFrom("user@domain.com");
                    $mail->Subject    = "Subject";
                    $mail->MsgHTML("Message");

   //I NEED TO RUN YET ANOTHER QUERY SELECT ABOVE TO CAPTURE THE AGENT EMAIL ADDRESS, LETTING THEM KNOW THEY HAVE WON A PRIZE
                        $mail->AddAddress($row["EmailAddress"]);
                        $mail->Send();
                        $mail->ClearAttachments();
                        $mail->ClearAllRecipients();
                        $mail->ClearReplyTos();    
                    }
                }



            $db->commit();
            $db->null;
        }

    catch (PDOException $e)
        {
            $db->rollback();
            echo $e->getMessage();

            exit;
        }
?>

0 Cevap