2009-07-21 7 views
0

Je veux joindre 2 tables ensemble mais je ne peux pas le faire fonctionner.Problème joindre 2 tables

Ce sont les tables:
fils:id, title
messages:thread_id, message

$sql = mysql_query("SELECT threads.id, threads.title 
        FROM threads 
        JOIN posts ON posts.thread_id = threads.id 
        WHERE threads.id = ".intval($_GET['id'])); 


while ($post = mysql_fetch_assoc($sql)) 
{ 
    echo $post['title']; 
    echo $post['message']; 

} 

Il obtient le titre, mais pas le message. J'en ai un affecté au fil.

+0

nous montrent un peu plus de code, y compris la définition de $ id et $ sql. – markus

+1

et s'il vous plaît ajouter un mysql_real_escape_string() autour de votre $ _GET ['id] – markus

Répondre

1

Y a-t-il des articles avec un thread_id qui correspondent à $id? Parce que, sinon, cela générerait un ensemble de résultats vide.

+0

Essayez de supprimer la clause where et voir si vous obtenez des résultats. Si oui, le problème est tel que suggéré. Sinon, au moins, vous venez de réduire votre espace de recherche pour une solution. – Brian

+0

oui je peux obtenir le titre de threads –

0

Pouvez-vous le faire fonctionner en MySQL, sans le PHP? Je compte sur phpMyAdmin pour résoudre les requêtes. Une fois que je l'ai dans MySQL plus directement, phpMyAdmin a une fonction "export SQL for PHP".

3

Vous ne sélectionnez pas posts.message. Changez votre SQL à ceci et cela peut fonctionner.

SELECT threads.id, threads.title, posts.message 
FROM threads 
JOIN posts ON posts.thread_id = threads.id 
WHERE threads.id = $id 
+0

merci qui fonctionne mais pas vraiment comment je le voulais, j'ai 2 dossiers et il boucle seulement un pour une raison quelconque:/ –

+0

ont-ils tous deux le même $ id? – markus

+0

oui bien sûr

0

Si vous voulez récupérer les messages que vous pouvez le faire dans l'autre sens

SELECT threads.id, threads.title, posts.message 
FROM posts 
JOIN threads ON threads.id = posts.thread_id 
WHERE posts.thread_id = $id 
Questions connexes