Autor | Zpráva | ||
---|---|---|---|
pajadvorak Profil |
#1 · Zasláno: 4. 8. 2016, 07:21:57
Mám jednoduchý dotaz:
$result = mysql_query("select * from tabulka WHERE cislo='201622356' ORDER BY id ASC"); Takto chodilo několik měsíců. Najednou to přestalo fungovat a to tím způsobem, že to nevrací nic. Ani mysql_num_rows($result); nevrátí 0 výsledků, prostě nic.
Po dlouhém pátrání jsem přišel na to, že když řazení "order by id asc" dám pryč, tak to výsledek vrátí v pořádku. mysql_error($result); => nevypíše žádnou chybu print_r($result); => nevypíše nic var_dump($result); => vypíše "bool(false)" A přes phpmyadmin dotaz výše funguje v pořádku a vypíše co má (select * from tabulka WHERE cislo='201622356' ORDER BY id ASC). Prosím, napadá někoho nápad, čím to je, že to v php nefunguje? Moc děkuji. |
||
Taps Profil |
#2 · Zasláno: 4. 8. 2016, 08:08:21
Nemas promenou result jeste nekde jinde v kodu?
|
||
Kajman Profil |
#3 · Zasláno: 4. 8. 2016, 08:37:15
pajadvorak:
Funkci mysql_error se dává jako parametr identifikátor připojení, ne identifikátor sady dat. Také je potřeba vrácený string vypsat. Zkuste tedy v případě chyby raději echo mysql_error(); |
||
pajadvorak Profil |
Taps:
nemám, pouze jednou Kajman: ok, teď už mi to hlásí tuhle chybu: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay |
||
Kajman Profil |
#5 · Zasláno: 5. 8. 2016, 08:45:39
Pokud ten dotaz je opravdu jen z jedné tabulky (není to view s joiny) a omezení na číslo neodpovídá příliš mnoho řádků, zkusil bych v PMA
ANALYZE TABLE tabulka Pokud to má vrátit moře řádků, zavolejte před tím dotazem ještě zmíněné povolení obrovských dotazů mysql_query("SET SQL_BIG_SELECTS=1"); |
||
pajadvorak Profil |
#6 · Zasláno: 5. 8. 2016, 17:28:13
Kajman:
Tak jsem zjistil, že byl problém v tom, že nebyl adekvátní index pro tento dotaz a procházení 250 000 řádků prostě server nezvládl (nastavení hostingu). Děkuji za pomoc. |
||
Časová prodleva: 8 let
|
0