2009-07-21 2 views
0

Я хочу присоединиться к 2 столам вместе, но я не могу заставить его работать.Проблема с соединением 2 таблиц

Эти таблицы:
нити:id, title
сообщений: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']; 

} 

Он получает титул, но не сообщение. У меня есть один, назначенный на поток.

+0

показать нам немного больше кода, в том числе определение $ Ид и $ SQL. – markus

+1

и добавьте mysql_real_escape_string() вокруг вашего $ _GET ['id] – markus

ответ

1

Есть ли сообщения с thread_id которые соответствуют $id? Потому что, если нет, это создаст пустой набор результатов.

+0

Попробуйте удалить предложение where и посмотреть, есть ли у вас какие-либо результаты. Если это так, проблема заключается в том, что было предложено чернильно. Если нет, по крайней мере, вы просто сократили пространство поиска для решения. – Brian

+0

да я могу получить заголовок из тем – 2009-07-21 20:13:31

0

Можете ли вы заставить его работать в MySQL без PHP? Я полагаюсь на phpMyAdmin для устранения неполадок. Как только я получаю его в MySQL более прямо, phpMyAdmin имеет функцию «экспорт SQL для PHP».

3

Вы не выбираете post.message. Измените свой SQL на это, и это может сработать.

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

спасибо, что работает, но на самом деле не так, как я этого хотел, у меня есть 2 записи, и по какой-то причине они только отключают:/ – 2009-07-21 20:28:36

+0

они оба имеют одинаковый $ id? – markus

+0

Да, конечно, 2009-07-21 20:36:34

0

Если вы хотите получать посты вы можете сделать это по-другому

SELECT threads.id, threads.title, posts.message 
FROM posts 
JOIN threads ON threads.id = posts.thread_id 
WHERE posts.thread_id = $id 
Смежные вопросы