Jump to content
php.lv forumi

mysql select


viena tante

Recommended Posts

Labdien, es nesaprotu kāpēc man šis, darbojoties caur mysql komandrindu darbojās pareizi un selekto visu, kas nepieciešams, bet no php tikai pirmo rezultātu, ko atrod fw_ekipejums tabulā

SELECT fw_items.name, fw_items.attribute1 
FROM fw_items, fw_ekipejums, fw_users 
WHERE fw_users.username=fw_ekipejums.username AND fw_users.username='$username' AND
(fw_ekipejums.nazis = fw_items.name or
fw_ekipejums.zobens = fw_items.name or
fw_ekipejums.zobens1 = fw_items.name or
fw_ekipejums.zobens2 = fw_items.name or
fw_ekipejums.loks = fw_items.name)

 

Kāds lūdzu var paskaidrot ko daru nepareizi?

Edited by viena tante
Link to comment
Share on other sites

Izvadot datus tu taču taisi ciklu, vai ne?

es ar var_dump() skatos to, kas iznāk arā no mysql_fetch_assoc()

 

Tā nevartu būt kautkāda php konfigurēšanas vaina? Citi pieprasijumi gan strādā..

te nav ielikts pilns iekavu saturs ar OR, bet ideja ir attēlota. Kopā ir ap 20 tie OR. Pieprasijuma strings ir 1015 zīmes apmēram, ja tas palīdz..

Link to comment
Share on other sites

Es tev stipri ieteiktu pārdomāt pašu vaicājuma struktūru.

 

Varbūt sāc ar to, ka izstāsti, ko tu ar to vaicājumu vispār gribi panākt. Rakstīt 20 OR variantus augstāk esošā piemēra stilā izskatās pēc diezgan greizas izpratnes par relāciju datubāzēm.

Link to comment
Share on other sites

Es tev stipri ieteiktu pārdomāt pašu vaicājuma struktūru.

 

Varbūt sāc ar to, ka izstāsti, ko tu ar to vaicājumu vispār gribi panākt. Rakstīt 20 OR variantus augstāk esošā piemēra stilā izskatās pēc diezgan greizas izpratnes par relāciju datubāzēm.

Ir 3 tabulas 1. priekšmeti 2.ekipejums 3. lietotaju dati.

2.ekipejums ir 20 kolonnas kurās ir katra lietotāja priekšmeti kurus viņš izmanto(kolonnas nosaukums ir priekšmeta tips), un atkarībā no priekšmeta kolonnā tad arī es paņemu vajadzīgās priekšmeta īpašības no 1.priekšmeti.

Link to comment
Share on other sites

fw_items:
-----------
name
attribute
...



fw_ekipejums
--------------
etype ( nazis, zobens1, zobens2, .. , whatever)
username
..

fw_users
-------------
username


SELECT fw_items.name, fw_items.attribute 
FROM fw_items JOIN fw_ekipejums ON fw_items.name=fw_ekipejums.etype JOIN fw_users ON fw_ekipejums.username=fw_users.username
WHERE fw_users.username = XXXX

 

Es tavā vietā padomātu šādā virzienā. Te vismaz ir iespējams salikt KAUT KĀDUS indeksus atšķirībā no 20 OR gadījuma. Tāpat tev vajadzētu padomāt par to, ka username (citu lauku, pēc kuriem notiek join) vietā varētu izmantot identifikatorus ar cipariskajām vērtībām, bet ja vien problēma ir codez minētajā, tad tev vēl tāls ceļš ejams :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...