| 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: 13 let
|
|||
0