Autor | Zpráva | ||
---|---|---|---|
Fic Profil |
Ahoj,
rád bych požádal o radu. Mám následující kód, který má za cíl updatovat množství skladových zásob (avail) v databázi dle počtu objednaných kusů z e-shopu. "is_numeric" jen testuje, o jaké položky jde (s položkami začínající písmenem se pracuje jinak). Problém je, že v minimálně jednom případě k odečtení nedošlo. Byla to zrovna objednávka přes 100 položek - může v tom být problém? Díky moc za jakoukoliv pomoc. <?php public function updateAvailPlants(){ $query = "UPDATE plants SET avail = CASE"; $counter=null; foreach ($_SESSION['basket'] as $key => $value) { if (is_numeric(substr($key, 0, 1))){ $query .= " WHEN plant_id = $key THEN avail-$value"; $counter++; } } $query .= " ELSE avail END"; if ($counter!=null){ $this->db_connection->query($query); } return; } ?> |
||
Kajman Profil |
Probém může být v délce sestaveného dotazu, ten je limitován nastavením serveru či připojení.
Pokud řádky košíku máte uložené, můžete sestavit update dotaz s joinem, který bude mít statickou délku a díky where omezení na změnu jen některých řádků by měl být i rychlejší. A i když zůstanete u updatu s case, také použijte where, ať se neupdatují všechny řádky v tabulce, viz Hromadná aktualizace záznamů |
||
Časová prodleva: 8 let
|
0