Autor | Zpráva | ||
---|---|---|---|
Peet Profil |
#1 · Zasláno: 22. 3. 2013, 17:21:15
Zdravím mám dvě tabulky
favorits(user_id,movie_id); když použiji tento dotaz $movies=$mysql->query(" SELECT id,movie_id FROM movies M INNER JOIN favorits F ON F.movie_id=M.id WHERE F.user_id=".$_SESSION['user']['id']." "); tak vše funguje jak má dále mám tabulku pays(id,movie_id,user_id,pay) a když použiju stejný dotaz $movies=$mysql->query(" SELECT id,movie_id FROM movies M INNER JOIN pays P ON P.movie_id=M.id WHERE P.user_id=".$_SESSION['user']['id']." "); tak to napíše Fatal error: Call to a member function fetch_assoc() nevím jestli to není tím že v tabulce pays mám sloupec movie_id nastavený jako FOREIGN KEY |
||
Tori Profil |
#2 · Zasláno: 22. 3. 2013, 17:26:51
Jaká DB vrstva? Co přesně dělá metoda query, resp. kde se volá ta fetch_assoc?
|
||
Peet Profil |
#3 · Zasláno: 22. 3. 2013, 17:28:22 · Upravil/a: Peet
používám mysqli, fetch_assoc() volám ve while
while($movie=$movies->fetch_assoc()){ . . . } nejde mi do hlavy proč u jednoho to jde a u druhého příkladu ne. Má s tím něco společného FK ? |
||
Tori Profil |
#4 · Zasláno: 22. 3. 2013, 18:34:22
Peet:
„nejde mi do hlavy proč u jednoho to jde a u druhého příkladu ne“ Z popisu chyby vyplývá, že metoda query nevrátila objekt. V manuálu vidíte, že při chybě v dotazu vrací FALSE. Popis chyby najdete v mysqli::$error. (Tipuju, že sloupec id je nejednoznačný.) |
||
Virtus Profil |
Tori:
„Tipuju, že sloupec id je nejednoznačný.“ Taky bych to tak tipnul. Peet: Pokud v dotazu spojujete víc jak jednu tabulku, vždy dávejte před názvy sloupců alias/název tabulky, ze který sloupec chcete vybrat, vyhnete se tak spoustě problémů, které mohou nastat, příklad: $movies=$mysql->query(" SELECT M.id,P.movie_id FROM movies M INNER JOIN pays P ON P.movie_id=M.id WHERE P.user_id=".$_SESSION['user']['id']." "); |
||
MartinR Profil |
#6 · Zasláno: 23. 3. 2013, 06:52:22
A co vrátí databáze v případě, že ten dotaz spustíš přímo v ní? Jistě používáš i adminer nebo phpmyadmin nebo prostě jen konzoli.
SELECT id,movie_id FROM movies M INNER JOIN pays P ON P.movie_id=M.id WHERE P.user_id=1; Z vrácené chyby jistě poznáš co je špatně. Např. column ambiguously defined .. |
||
Peet Profil |
#7 · Zasláno: 24. 3. 2013, 16:18:11
Super děkuji moc, vůbec mi to nedošlo :) děkuji vše funguje
|
||
Časová prodleva: 11 let
|
0