Autor | Zpráva | ||
---|---|---|---|
Smoother Profil |
#1 · Zasláno: 25. 8. 2009, 22:01:43
Ahoj,
mám trapný požadavek na výběr počtu aktuálních článků z db. Tedy porovnávám aktuální datum s uloženou platností v db. V tom problém ale není. Uvedený dotaz vrátí počet všech článků v databázi (včetně starých). Tak mě napadá, zda neuvidíte chybu, nebo neznáte nějaké elegantnější řešení. Díky předem Smoother include 'db-connect.php'; $aktdate=date("Ymd"); $pocet=mysqli_fetch_assoc(mysqli_query($db_spojeni,"SELECT COUNT(polozka) AS pocet FROM zpravy WHERE platnost >= '.$aktdate.'")); if ($pocet['pocet'] == 0) { echo 'Zadne clanky'; } else { echo '<b>('.$pocet['pocet'].') clanku</b>'; } |
||
TomášK Profil |
#2 · Zasláno: 25. 8. 2009, 22:43:16
Odstraň tečky z toho dotazu a myslím, že to půjde. Elegantnější řešení je platnost >= NOW().
|
||
Alphard Profil |
#3 · Zasláno: 25. 8. 2009, 23:14:33 · Upravil/a: Alphard
TomášK:
„Elegantnější řešení je platnost >= NOW().“ Dosazení data z PHP umožní cachování dotazu na úrovni MySQL. |
||
Kcko Profil |
#4 · Zasláno: 25. 8. 2009, 23:28:13
Alphard
Muzes k tomu napsat vice? Ja o tom nic nevim, zajimalo by mne to. |
||
Alphard Profil |
#5 · Zasláno: 25. 8. 2009, 23:56:10
Kcko:
Zrovna o tom nemůžu najít žádný článek, takže musí stačit mé stručné (snad né chybné) vysvětlení. MySQL cachuje jednotlivé dotazy (cache se maže při změně tabulky, které se týká). Problém je v tom, že se cache nepoužije, pokud dotaz obsahuje funkce vkládající aktuální čas, jako je třeba now(). Více si o tom přečti tady A Practical Look at the MySQL Query Cache, zdůrazňuji jednu větu (je na konci): Many functions, such as CURRENT_DATE, NOW, RAND and others, negate the use of the cache. |
||
Kajman_ Profil * |
#6 · Zasláno: 26. 8. 2009, 08:06:51
|
||
Kcko Profil |
#7 · Zasláno: 27. 8. 2009, 22:58:11
Diky oboum , mrknu na to
|
||
Smoother Profil |
#8 · Zasláno: 28. 8. 2009, 15:10:54
TomášK
jsem trouba, díky.... |
||
Časová prodleva: 15 let
|
0