您好我一直在尝试使用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。