V MySQL je k dispozici několik primitivních funkcí pro řízení běhu. Kromě poměrně běžných IF, IFNULL a NULLIF je to i mírně složitější konstrukce CASE. Kde se dá tato konstrukce použít? Např. pro získání ceny zboží v nákupním košíku:
<?php /** Použití: "CASE id" . make_when($array) . " END" * @param array klíče jsou ošetřené podmínky, hodnoty ošetřené výsledky * @return string vytvořená podmínka pro SQL konstrukci CASE */ function make_when($array) { $return = ""; foreach ((array) $array as $key => $val) { $return .= " WHEN $key THEN $val"; } return $return; } if ($_SESSION["kosik"]) { mysql_query(" SELECT SUM(cena * CASE id" . make_when($_SESSION["kosik"]) . " END) FROM zbozi WHERE id IN (" . implode(", ", array_keys($_SESSION["kosik"])) . ") "); } ?>
Pole $_SESSION["kosik"]
použité pro nákupní košík v klíčích obsahuje ID zboží a v hodnotách požadovaný počet kusů. Cena každého zboží se vynásobí počtem kusů v košíku, takže celkový součet odpovídá hodnotě košíku.
Přijďte si o tomto tématu popovídat na školení Návrh a používání MySQL databáze.
Diskuse je zrušena z důvodu spamu.