Autor | Zpráva | ||
---|---|---|---|
gorilla Profil |
#1 · Zasláno: 4. 11. 2022, 23:28:58
Ahoj,
tvořím teď jeden web a snažím se udělat selekci obsahu pouze pro daného uživatele. Vždycky jsem pracoval pouze s jednou db tabulkou, ale tady už z principu budu muset pracovat s více tabulkami zároveň. Při přihlášení naberu z databáze id uživatele a dám ho do $_SESSION['id']. Pak mám tabulku se seznamem stránek (obsah), které obsahují sloupec pid (project id). Kromě této tabulky mám ještě druhou tabulku (opravneni), ve které jsou dva sloupce id a pid - ve sloupci id je id uživatele a ve sloupci pid je pid stránky. Teď je mi jasné, že musím nějakým způsobem vytvořit selekci dat z databáze - vyber z tabulky opravneni všechny záznamy, kde $_SESSION['jmeno'] = id a odpovídající pid vyber z tabulky obsah. Popravdě ale moc nevím, jak toto provést v praxi a zda je to vůbec reálná úvaha. Mám problém se selekcí dat z více tabulek zároveň. Podle internetu jsem zkusil sestrojit tohle, ale to evidentně nefunguje $sql = "SELECT * FROM obsah,opravneni WHERE ". $_SESSION['id'] ." = opravneni.id AND (opravneni.pid = obsah.pid) ORDER BY od DESC, pid DESC"; Mohl bych někoho poprosit o radu? |
||
Kajman Profil |
#2 · Zasláno: 4. 11. 2022, 23:40:34
Jak se nefungování projevuje? Vypisujete si při ladění výsledný dotaz i chybovou hlášku z databáze? Třeba ta bude zmíněna nejednoznačnost sloupce pid v řazení.
|
||
Stroganov Profil * |
#3 · Zasláno: 5. 11. 2022, 00:03:19
gorilla:
Súhlasím s Kajmanom. Pokiaľ ide o tú nejednoznačnosť, tú obídete tak, že pred nejednoznačné stĺpce dopíšete názov tabuľky (alebo jej alias) - to vlastne už využívate. Aliasy tabuliek sa definujú pomocou kľúčového slova as hneď za názvom tabuľky, za slovom as nasleduje názov aliasu (kľúčové slovo as je nepovinné, hodí sa kvôli prehľadnosti). A bolo by dobré dáta (aj tie zo $_SESSION) ošetriť, než ich pošlete do databázy, aby vás raz neprekvapil SQL Injection. |
||
Časová prodleva: 2 roky
|
0