如果第一个返回空结果,PHP执行第二个PDO查询

时间:2013-06-11 16:07:35

标签: php pdo

您好我一直在尝试使用PDO使这个PHP功能正常工作。目标是执行不同的pdo语句,如果第一个没有返回结果:

public static function getItemById($codiceArticolo, $fasciaSconto) {
    $conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);

    //Controlla se esiste l'articolo nel listino agenti (prezzi netti)
    $st = $conn->prepare("SELECT Listini_Pers.CodiceArticolo,
                                 Listini_Pers.DescrizioneArticolo,
                                 Listini_Pers.CodiceAlternativo1,
                                 Listini_Pers.CodiceAlternativo2,
                                 Listini_Pers.PrezzoNetto as PREZZONETTO,
                                 Listini_Pers.DescrListino as DescrProm,
                                 Listini_Pers.FORNITORE,
                                 sum(if(Giacenze.IDMAG = 27 or Giacenze.IDMAG = 28, Giacenze.GIACENZA, 0)) as DispCasoria,
                                 sum(if(Giacenze.IDMAG = 29, Giacenze.GIACENZA, 0)) as DispCaserta,
                                 sum(if(Giacenze.IDMAG = 30, Giacenze.GIACENZA, 0)) as DispPozzuoli,
                                 COALESCE(sum(Giacenze.GIACENZA),0) as DispTotale
                                 FROM Listini_Pers
                                 LEFT JOIN Giacenze ON Listini_Pers.CodiceArticolo = Giacenze.CODART
                                 WHERE Listini_Pers.CodiceArticolo = :codiceArticolo
                                 AND Listini_Pers.CodListino = 50"); //50 = listino rivenditori

    $st->bindValue(":codiceArticolo", $codiceArticolo, PDO::PARAM_STR);
    $st->execute();
    $row = $st->fetch();


    if (!$row){ 
        //se non esiste un prezzo agenti prendi il prezzo dal listino della categoria del cliente o dal listino promozionale (se esiste)

        $st = $conn->prepare("SELECT Listini_Norm.CodiceArticolo,
                                 Listini_Norm.DescrizioneArticolo,
                                 Listini_Norm.CodiceAlternativo1,
                                 Listini_Norm.CodiceAlternativo2,
                                 Listini_Norm.FasciaSconto,
                                 Listini_Norm.Sconto1,
                                 Listini_Norm.Sconto2,
                                 Listini_Norm.PREZZONETTO,
                                 Listini_Norm.PrezzoLordo,
                                 Listini_Norm.FORNITORE,
                                 Listini_Prom.PrezzoNetto AS PrezzoProm,
                                 Listini_Prom.DescrListino AS DescrProm,
                                 Listini_Prom.DataFine AS ScadenzaProm,
                                 sum(if(Giacenze.IDMAG = 27 or Giacenze.IDMAG = 28, Giacenze.GIACENZA, 0)) as DispCasoria,
                                 sum(if(Giacenze.IDMAG = 29, Giacenze.GIACENZA, 0)) as DispCaserta,
                                 sum(if(Giacenze.IDMAG = 30, Giacenze.GIACENZA, 0)) as DispPozzuoli,
                                 COALESCE(sum(Giacenze.GIACENZA),0) as DispTotale
                                 FROM Listini_Norm 
                                 LEFT JOIN Listini_Prom ON Listini_Norm.CodiceArticolo = Listini_Prom.CodiceArticolo
                                 LEFT JOIN Giacenze ON Listini_Norm.CodiceArticolo = Giacenze.CODART
                                 WHERE Listini_Norm.CodiceArticolo = :codiceArticolo
                                 AND Listini_Norm.FasciaSconto = :fasciaSconto");
        $st->bindValue(":codiceArticolo", $codiceArticolo, PDO::PARAM_STR);
        $st->bindValue(":fasciaSconto", $fasciaSconto, PDO::PARAM_STR);
        $st->execute();
        $row = $st->fetch();
    }

    return new Item($row);
    $conn = null;
}

现在,如果第一个查询结果为空,则返回null。

0 个答案:

没有答案