Hirdetés

Új hozzászólás Aktív témák

  • cucka

    addikt

    válasz emitter #521 üzenetére

    Az indexnek (idegen kulcsnak) mi pontosan az értelme?
    Bizonyos esetekben gyorsít. Olvass lejjebb.

    Ez akkor is működne, ha a megye_id nem lenne idegen kulcs, csak egy sima mező, nem?
    Igen.
    Viszont ha jól látom, azt csinálod, hogy a szállás tábla összes sorára lekéred a megye táblából az adott megye_id-hez tartozó nevet. Na ezt leginkább join-okkal szokás megoldani, mert a lényeg, hogy kevés és gyors query-t adjunk ki az adatbázisnak. Plusz itt már jól jönnek az idegen kulcsok is..

    Például

    select szallas.id id,szallas.nev nev,szallas.cim cim,megye.nev megye_nev from szallas left join megye on (szallas.megye_id=megye.id)

    Természetesen azt nem tudom, milyen oszlopaid vannak a szállás táblában, de a lényeg remélem érthető így is. Próbáld ki, nézd meg, mit kapsz eredményül.

    A másik, hogy miért nem működik az a szintaktika, hogy:
    Azt nem tudom, miért nem működik, de valóban nem. Igazából abban az egy sorban 4, azaz négy hiba van :)
    1. A tömb indexei vagy számok, vagy string-ek. Nálad egyik sem, mert lemaradtak az idézőjelek ahhoz, hogy string index legyen.
    2. Ha függvény visszatérési értéke tömb, akkor annak nem tudod ilyen formában elérni valamelyik mezőjét.
    3. A mysql_fetch_assoc nem mindig tömbbel tér vissza, semmi nem garantálja, hogy létezik az a ['nev'] mező, amire hivatkozol. Ez esetben a minimum, hogy kapsz egy warning-ot, de valószínüleg további problémát is okozhat (mert a $megye változód így null marad)
    4. A mysql_fetch_assoc függvénynek csak egy paramétere van. A második paramétert a mysql_fetch_array-nél használjuk és arra jó, hogy megmondja neki, hogy legyen indexelve az eredményül kapott tömb - számokkal, mezőnevekkel vagy mindkettővel. A mysql_fetch_assoc() ugyanezt csinálja, de kizárólag mezőnevekkel indexel.

Új hozzászólás Aktív témák