Autor | Zpráva | ||
---|---|---|---|
biggos Profil * |
#1 · Zasláno: 18. 8. 2015, 19:49:44
Zdravím na internetu jsem našel že když chcu hledat vae více tabulkách stačí za from napsat více tabulek odělených čárkou ale když jsem to tak udělal tak to vyhazuje error:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\VertrigoServ\www\search.php on line 91 script: $result = mysql_query(" SELECT * FROM `produkty`, `dalsi produkty`........ WHERE MATCH(nazev,popis ) AGAINST ('$search' IN BOOLEAN MODE) ORDER BY 5 * MATCH(nazev) AGAINST ('$search') + MATCH(popis) AGAINST ('$search') DESC "); while ($row = mysql_fetch_object($result)) { <-------řádek 91 Mohli byste mi poradit jak to spravit? |
||
juriad Profil |
biggos:
Když je uvedeš oddělené čárkou jedná se o CROSS JOIN a ten rozhodně nechceš. To by vytvořilo řádky všech možných kombinací mezi těmi dvěma (více tabulkami). Pokud má 1. tabulka 200 záznamů a 2. má 300 záznamů, bude výsledek mít 60000 záznamů. Pokud se v nich sloupce jmenují stejně, dojde k chybě (ambigous column name nebo něco podobného). Kdykoli při práci s databází dostaneš chybu (většina funkcí vrací FALSE při chybě), vypiš si jí pomocí mysql_error. Ty nechceš propojit tabulky, ale sloučit tabulky, musíš hledat UNION. SELECT * FROM (SELECT * FROM produkty UNION ALL SELECT * FROM dalsi_produkty) AS vse WHERE ... Máš vůbec nějaký důvod mít dvě různé tabulky, když obsahují stejná data (proč bys jinak chtěl hledat v obou)? |
||
Keeehi Profil |
biggos:
„Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in“ To je proto, že máš v SQL chybu a tak funkce mysql_query místo výsledků vrací false. Vypiš si chybu s mysql_error() .
Na problém s Cross joinem už upozornil juriad. Hlavně čím větší počet tabulek tím větší problém. juriad: „myslím, že by i měly být stejně pojmenované“ Mohou být pojmenované jakkoli. Jen počet musí sedět. |
||
Časová prodleva: 9 let
|
0