query voor 3 tabellen
ik probeer voor elkaar te krijgen dat mijn query data uit de tabel comments haalt waar de ID gelijk is aan het id van de post:
Code (php)
1
'SELECT a.date, a.message, b.username FROM comments a, users b, msg c WHERE a.user = b.ID AND a.ID = \'8\' ORDER BY date DESC'
wat doe ik fout?
Toevoeging op 14/04/2012 18:19:10:
ik heb nu dit:
Dus vertel ons op z'n minst:
1. heeft de $_GET een waarde, zo ja welke
2. is de koppeling die je in de where clause wel correct. "ID" zegt zo weinig over de inhoud van z'n veld.
3. en wat betreft die functie clean, dat zal wel weer kolder van de bovenste plank zijn
4. en de vraag is dan uiteraard wat geeft _error
5. wat verwacht je en wat doet het
-------------------------------
http://www.w3schools.com/sql/sql_join.asp
2.in het veld id staat ook een int [8].
3.clean moet je niet op letten die controleert op niet geldige sql synthax.
4.ik krijg geen error maar ook geen resultaat.
5. ik wil dat ik de datum & de message krijg uit de tabel comments
en de users.username uit de tabel users waar de id gelijk is aan de comments.user en de comments.ID gelijk is aan de clean($_GET['post']) dit geval 8
Heb je dan toevallig deze code wel boven aan je script staan?
Deze laat namelijk de error zien.
Tevens als ik het zo zie aan jou query.
Denk ik persoonlijk dat je even moet kijken de Optie JOIN. Deze link heeft Noppes reeds gegeven. Misschien brengt dat iets meer wat je wilt.
Echt helpen met JOIN kan ik jammer genoeg niet. IVM ik daar ook niet zo gedreven in ben.
Gewijzigd op 14/04/2012 18:55:27 door Frank WD
zal het proberen bedankt voor de reactie :P
Klik
Ik ken jou code verder niet, maar misschien dat je met de foutafhandeling ook meer duidelijkheid krijgt in het geen wat fout gaat in de query.
Code (php)
1
SELECT comments.date, comments.message, users.username FROM comments INNER JOIN users ON comments.user = users.ID WHERE comments.ID = '" . $_GET['post'] . "' ORDER BY comments.date"
alleen beveiliging nog verbeteren
Jou query lijkt mij her en der een beetje vreemd. Vooral dat ORDER BY date DESC lijkt me vreemd. Je vraagt 1 comment op (met id = 8) en daarbij vraag je de gebruikersnaam op. Een id is uniek en dus is die ORDER BY totaal overbodig, er is maar 1 resultaat telkens.
Een voorbeeldje van deze query met JOINS
Gewijzigd op 14/04/2012 19:24:35 door Wouter J
in mn vorige reactie staat dat toch niet??
Tevens staat de ORDER BY date er nog steeds in, iets wat totaal overbodig is.
Ook hoort een getal (integer/double) buiten quotes, ook in SQL. En dus hoor je hem ook te typecasten en niet met mysql_real_escape_string te omvatten (en ja, dat staat er inderdaad ook helemaal niet, maar ik geef het je gewoon even als TIP mee)
oke bedankt voor de tip :P