query voor 3 tabellen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lex van der poel

lex van der poel

14/04/2012 18:15:56
Quote Anchor link
Hoi,
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)
PHP script in nieuw venster Selecteer het PHP script
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
"SELECT a.date, a.message, b.username FROM comments a, users b WHERE a.user = b.ID AND a.ID = '" . clean($_GET['post']) . "' ORDER BY date DESC"
 
PHP hulp

PHP hulp

20/04/2024 06:17:43
 
Noppes Homeland

Noppes Homeland

14/04/2012 18:33:19
Quote Anchor link
Als je alleen maar dit mede te delen hebt dan kan je lang wachten op een niet gegist antwoord.

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
 
Lex van der poel

lex van der poel

14/04/2012 18:47:55
Quote Anchor link
1.De get heeft een int waarde nu 8.
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
 
Frank WD

Frank WD

14/04/2012 18:53:31
Quote Anchor link
Lees dat je geen error te zien krijgt alleen een lege pagina.
Heb je dan toevallig deze code wel boven aan je script staan?

Deze laat namelijk de error zien.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors', 1);     // 0 = uit, 1 = aan
error_reporting(E_ALL);
?>


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
 
Lex van der poel

lex van der poel

14/04/2012 18:57:46
Quote Anchor link
zal het proberen bedankt voor de reactie :P
 
Frank WD

Frank WD

14/04/2012 19:02:02
Quote Anchor link
Ik kan je deze link ook even aanraden.
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.
 
Lex van der poel

lex van der poel

14/04/2012 19:19:19
Quote Anchor link
dank u wel ik heb het uitgevogeld met uw tip:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
Wouter J

Wouter J

14/04/2012 19:23:43
Quote Anchor link
Even wat tips, maak je aliasen een beetje duidelijk. Dus niet users AS b maar bijv. users AS u en comments AS c.

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
 
Lex van der poel

lex van der poel

14/04/2012 19:32:37
Quote Anchor link
in mn vorige reactie staat dat toch niet??
 
Wouter J

Wouter J

14/04/2012 19:35:18
Quote Anchor link
Nee, maar ik had jou berichtje nog niet gelezen voordat ik mijn berichtje poste en gaf je dus tips over je beginpost.
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)
 
Lex van der poel

lex van der poel

14/04/2012 22:06:43
Quote Anchor link
oke bedankt voor de tip :P
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.