Inner Join mysqli

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Eeyk Vd noot

Eeyk Vd noot

10/03/2015 14:12:11
Quote Anchor link
ik heb een fout die ik niet begrijpt. kan iemand mij hier mee helpen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
  $berichten
= mysqli_query($dbcreat,
  "(SELECT * FROM `berichten_muur`) AS BB INNER JOIN (SELECT * FROM `vriendenlijst`) AS TT WHERE `BB.gebruikersnaam`='".mysqli_real_escape_string($dbcreat,$TT->naam_1)."' or `BB.gebruikersnaam`='".mysqli_real_escape_string($dbcreat,$TT->naam_2)."'") or die(mysqli_error($dbcreat));
 ?>


de error :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS BB INNER JOIN (SELECT * FROM `vriendenlijst`) AS TT WHERE `BB.gebruikersnaam`' at line 1


Ik heb nog nooit Cross join of inner join toegepast.
ik had gelezen dat je dan normaal als de rowl naam Gebruikersnaam is dat je dan AS BB.gebruikersnaam moet gebruiken? maar dit werkt niet.

mvg.
 
PHP hulp

PHP hulp

03/03/2025 07:43:27
 
- wes  -

- wes -

10/03/2015 14:42:09
Quote Anchor link
SELECT a.*, b.*
FROM tabel_a a
JOIN tabel_b b
ON a.id = b.a_id
 
Eeyk Vd noot

Eeyk Vd noot

10/03/2015 14:46:51
Quote Anchor link
ik heb nu :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
  if($data->login == $bericht_vriend->naam_1){
 $gebruikersnaam2 =  $bericht_vriend->naam_2;
 }
else{
 $gebruikersnaam2 = $bericht_vriend->naam_1;
 }

 
 $berichten = mysqli_query($dbcreat,"
 (SELECT * FROM `berichten_muur`) AS BB INNER JOIN
 (SELECT * FROM `vriendenlijst`) AS TT WHERE `TT.naam_1=`'"
.mysqli_real_escape_string($dbcreat,$data->login)."' or
                                             `TT.naam_2`='"
.mysqli_real_escape_string($dbcreat,$data->login)."'
                                 AND `BB.gebruikersnaam`='"
.mysqli_real_escape_string($dbcreat,$gebruikersnaam2)."' AND `BB.pagina`='overzicht'") or mysqli_error($dbcreat);

?>


Alleen ik krijg geen error van mysqli_error.
ik krijg error bij een while commando :

Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, boolean given in /home/klant00324/domains/.nl/public_html/reactie.php on line 124


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
 while($object = mysqli_fetch_object($berichten)){
?>
Gewijzigd op 10/03/2015 15:21:03 door Eeyk Vd noot
 
Ward van der Put
Moderator

Ward van der Put

10/03/2015 14:58:16
Quote Anchor link
Je kunt een if (is_object($object)) toevoegen, maar zo te zien kun je het beste eerst je query verbeteren, want mysqli_query() eindigt in false in plaats van een mysqli_result.
 
Eeyk Vd noot

Eeyk Vd noot

10/03/2015 15:18:17
Quote Anchor link
dit is de mysqli in echo :


(SELECT * FROM `berichten_muur`) AS BB INNER JOIN
(SELECT * FROM `vriendenlijst`) AS TT WHERE

`TT.naam_1=`'patric' or `TT.naam_2`='patric' AND
`BB.gebruikersnaam`='Jolanda'
AND `BB.pagina`='overzicht'

Het klopt allemaal maar toch krijg ik een error.

Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, boolean given in /home/klant00324/domains/.nl/public_html/reactie.php on line 132
 
Ward van der Put
Moderator

Ward van der Put

10/03/2015 15:21:28
Quote Anchor link
Werkt die query wel als je hem handmatig uitvoert?

Ik vermoed van niet, alleen al omdat er een backtick ` verkeerd staat in:

`TT.naam_1=`'patric'
 
Eeyk Vd noot

Eeyk Vd noot

10/03/2015 15:27:09
Quote Anchor link
Wow die fout had ik niet gezien maar nu krijg ik deze fout:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS BB INNER JOIN (SELECT * FROM `vriendenlijst`) AS TT WHERE `TT.naam_1`='patric' at line 1
 
Ivo P

Ivo P

10/03/2015 15:34:54
Quote Anchor link
geen haakjes gebruiken in het stuk voor AS BB en ook niet voor AS TT
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/03/2015 15:39:22
Quote Anchor link
Ik zou die backticks er tevens uitgooien.
 
Eeyk Vd noot

Eeyk Vd noot

10/03/2015 15:42:49
Quote Anchor link
Zelfde error alleen nu Line 2 en niet line 1:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * FROM `vriendenlijst` AS TT WHERE `TT.naam_1`='patric' or ' at line 2

ik loop al te google maar ik kom niet echt de zelfde problemen tegen.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
 $berichten
= mysqli_query($dbcreat,"
 SELECT * FROM `berichten_muur` AS BB INNER JOIN
 SELECT * FROM `vriendenlijst` AS TT WHERE   `TT.naam_1`='"
.mysqli_real_escape_string($dbcreat,$data->login)."' or
                                             `TT.naam_2`='"
.mysqli_real_escape_string($dbcreat,$data->login)."'
                                 AND `BB.gebruikersnaam`='"
.mysqli_real_escape_string($dbcreat,$gebruikersnaam2)."' AND `BB.pagina`='overzicht'") or die(mysqli_error($dbcreat));
 
?>


of
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
 
 $berichten
= mysqli_query($dbcreat,"
 SELECT * FROM berichten_muur AS BB INNER JOIN
 SELECT * FROM vriendenlijst AS TT WHERE  TT.naam_1='"
.mysqli_real_escape_string($dbcreat,$data->login)."' or
                                          TT.naam_2='"
.mysqli_real_escape_string($dbcreat,$data->login)."'
                                 AND BB.gebruikersnaam='"
.mysqli_real_escape_string($dbcreat,$gebruikersnaam2)."' AND BB.pagina='overzicht'") or die(mysqli_error($dbcreat));
 
 
?>


blijf de zelfde fout houden.
Gewijzigd op 10/03/2015 15:44:12 door Eeyk Vd noot
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/03/2015 15:47:59
Quote Anchor link
zover ik weet hoort er na een JOIN een ON statement te komen. Ik twijfel nu wat je wilt. Hebben de twee tabellen een relatie met elkaar?
 
- wes  -

- wes -

10/03/2015 15:48:46
Quote Anchor link
Wat probeer je hier nou te doen dan, dit is namelijk niet een query waar je echt een join bij nodig hebt, je legt namelijk geen relatie tussen de 2 tabellen hier. Gewoon een where volstaat hier met een select bb.*, tt.*
 
Ivo P

Ivo P

10/03/2015 16:03:19
Quote Anchor link
ik denk dat dit in de richting komt. (zonder nadere kennis van je probleem benadruk ik "in de richting", want er mist info, zoals Frank al aanhaalt

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT * FROM berichten_muur AS BB
INNER JOIN
 (SELECT * FROM vriendenlijst AS TT
  WHERE  TT.naam_1='".mysqli_real_escape_string($dbcreat,$data->login)."'
     OR  TT.naam_2='".mysqli_real_escape_string($dbcreat,$data->login)."')  AS TTT
 ON BB.gebruikersnaam= TTT.naam_2 AND BB.pagina='overzicht'



edit:
ik heb 1 alias naar TTT veranderd.
Gewijzigd op 10/03/2015 16:04:33 door Ivo P
 
Eeyk Vd noot

Eeyk Vd noot

10/03/2015 16:07:28
Quote Anchor link
Ivo P.

Thanks het werkt :D echt super bedankt ;D
 
Ivo P

Ivo P

10/03/2015 16:09:04
Quote Anchor link
ik dacht eigenlijk dat hij voor de helft zou werken, namelijk niet als het gaat om naam_1....

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
ON (BB.gebruikersnaam = TTT.naam_1 OR BB.gebruikersnaam = TTT.naam_2) AND BB.pagina='overzicht'
 
- wes  -

- wes -

10/03/2015 16:09:48
Quote Anchor link
Blijft een superslechte query en database-ontwerp, zou daar echt nog wat aan doen Eeyk
 
Eeyk Vd noot

Eeyk Vd noot

10/03/2015 16:15:58
Quote Anchor link
alleen nu heb ik het volgende probleem.
ik krijg maar 1 nieuw bericht als iemand anders uit me vriendenlijst een bericht plaats krijg je weer de zelfde naam onder elkaar.

Afbeelding

Afbeelding


alle gegevens blijven bij de eerste vriend? en niet vriend 2 en 3.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/03/2015 16:19:23
Quote Anchor link
Zou je niet eerst eens de volgende tabellen maken?

- users
- berichten
- fotos

in de tabel berichten neem je dan ook een kolom user_id op
in de tabel fotos neem je dan ook een tabel bericht_id op er van uitgaande dat je de foto's in de berichten wilt plaatsen.
 
Eeyk Vd noot

Eeyk Vd noot

10/03/2015 16:22:01
Quote Anchor link
Nee het moeten echt tekst berichten zijn. de foto's zijn voor later ik wil eerst dat dit werkt maar tot nu toe lukt het al 3 dagen niet.

door ivo p ben ik nu verder dan ooit maar nog steeds werkt het helaas niet.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/03/2015 16:24:33
Quote Anchor link
Wil je dat een gebruiker meer dan één bericht kan plaatsen/sturen?

Of is dit de tabel 'berichten'? in dat geval zou ik username vervangen voor user_id
Gewijzigd op 10/03/2015 16:33:36 door Frank Nietbelangrijk
 
Eeyk Vd noot

Eeyk Vd noot

10/03/2015 16:38:16
Quote Anchor link
de bedoeling is een soort chat waar leden hun dag kunnen vertellen.
als ze bevriend zijn met elkaar.


Het is gelukt! :D
ik moest While nog aanpassen naar $object
Gewijzigd op 10/03/2015 16:41:36 door Eeyk Vd noot
 



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.