Autor | Zpráva | ||
---|---|---|---|
Michales Profil |
#1 · Zasláno: 19. 7. 2015, 14:09:44
Ahoj,
mám problém s tímto scriptem: $q =strtolower( $_GET["q"]); if (!$q) return; $sql = "(SELECT Album as vyhledani,id as cislo from albums WHERE Album LIKE '$q%') UNION (SELECT name as vyhledani,id as cislo from interprets WHERE name LIKE '$q%') UNION (SELECT Title as vyhledani,id as cislo from songs WHERE Title LIKE '$q%')"; $rsd = mysql_query($sql); while($rs = mysql_fetch_array($rsd)) { $cid = $rs['cislo']; $cname = $rs['vyhledani']; echo "$cname|$cid\n"; } Vrátí mi 10 výsledků, při proměnné $q= Johnny Cash, což je špatně. Pokud sql dotaz použiju v myadminu tak vrátí správný počet a to 22 |
||
Camo Profil |
#2 · Zasláno: 19. 7. 2015, 14:39:30
Michales:
V myAdmine to zadávaš ako sql alebo je na union funkcia? V dokumentácii sa píše "duplicate rows are removed from the result." |
||
Michales Profil |
Camo:
Jako sql dotaz: (SELECT Album as vyhledani,id as cislo from albums WHERE Album LIKE 'johnny cash%') UNION (SELECT name as vyhledani,id as cislo from interprets WHERE name LIKE 'johnny cash%') UNION (SELECT Title as vyhledani,id as cislo from songs WHERE Title LIKE 'johnny cash%')
A v myadminu se to zobrazí správně. |
||
Camo Profil |
#4 · Zasláno: 19. 7. 2015, 14:51:46
Michales:
Podľa mňa to súvisí s tým odstraňovaním duplicitných riadkov. V documentácii je napísané ako sa to vypína tak to skús. |
||
Michales Profil |
#5 · Zasláno: 19. 7. 2015, 14:59:16
Camo:
V databázi nemám duplicity, pokud to tedy nebere toto: Album as vyhledani,id as cislo, name as vyhledani,id as cislo, Title as vyhledani,id as cislo jako duplicity |
||
Camo Profil |
Michales:
Vyskúšal si to? Ja tvoju databázu nevidím. |
||
Michales Profil |
#7 · Zasláno: 19. 7. 2015, 15:23:22
Pokud slo o to dat UNION ALL tak ano. Ovsem vysledek je stejny. V myadminu spravne ve scriptu nikoliv.
|
||
Camo Profil |
#8 · Zasláno: 19. 7. 2015, 15:30:42
Michales:
Obydva tie UNIONy majú pri sebe ALL? |
||
Michales Profil |
#9 · Zasláno: 19. 7. 2015, 15:31:47
$sql = "(SELECT Album as vyhledani,id as cislo from albums WHERE Album LIKE '$q%') UNION ALL (SELECT name as vyhledani,id as cislo from interprets WHERE name LIKE '$q%') UNION ALL (SELECT Title as vyhledani,id as cislo from songs WHERE Title LIKE '$q%')"; |
||
Alphard Profil |
#10 · Zasláno: 19. 7. 2015, 15:45:07
První krok by měla být analýze toho, který výsledek je správný. Předpokládejme, že tady něco chybí. Chybí data z nějaké konkrétní tabulky, nebo ze všech nějaká? Jaká data chybí, jsou něčím zvláštní?
Možná sem dejte těch 22 správný řákdů, třeba někho něco napadne. |
||
Michales Profil |
Zde je možno vyzkoušet: http://kantry.funsite.cz/vyhledavac/test2.php Při zadání Johnny Cash = 10 výsledků
Běží tam tento script: require_once "config.php"; $q =strtolower( $_GET["q"]); if (!$q) return; $sql = "(SELECT Album as vyhledani,id as cislo from albums WHERE Album LIKE '$q%') UNION ALL (SELECT name as vyhledani,id as cislo from interprets WHERE name LIKE '$q%') UNION ALL (SELECT Title as vyhledani,id as cislo from songs WHERE Title LIKE '$q%')"; $rsd = mysql_query($sql); while($rs = mysql_fetch_array($rsd)) { $cid = $rs['cislo']; $cname = $rs['vyhledani']; echo "$cname|$cid\n"; } (SELECT Album as vyhledani,id as cislo from albums WHERE Album LIKE 'johnny cash%') UNION ALL (SELECT name as vyhledani,id as cislo from interprets WHERE name LIKE 'johnny cash%') UNION ALL (SELECT Title as vyhledani,id as cislo from songs WHERE Title LIKE 'johnny cash%')
22 výsledků, viz. screen Samozřejmě že to co je v myadminu je správně. |
||
Camo Profil |
#12 · Zasláno: 19. 7. 2015, 16:19:57
Michales:
Však v tom script máš DISTICT miesto ALL. |
||
Michales Profil |
#13 · Zasláno: 19. 7. 2015, 16:25:09 · Upravil/a: Michales
Camo:
Ano zde jsem dal omylem DISTINCT ale normálně na http://kantry.funsite.cz/vyhledavac/test2.php mám ALL Už je výše script upraven do správné podoby. Už jsem na to přišel, chyba byla v nastavení v max: options && !options.scroll ? 10 : 150 javascriptu
|
||
Camo Profil |
#14 · Zasláno: 19. 7. 2015, 16:38:38
Michales:
A ešte jednu vec som chcel. funkcie mysql_ sú deprecated. |
||
Michales Profil |
#15 · Zasláno: 19. 7. 2015, 16:39:28
Camo:
VÍM |
||
Keeehi Profil |
#16 · Zasláno: 20. 7. 2015, 00:15:15
A ještě SQL Injection.
|
||
Časová prodleva: 9 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0