2015-08-04 2 views
-1

В настоящее время у меня есть запрос, чтобы выбрать комментарии, связанные с определенным сообщением. Мне также нужно выбрать данные пользователей, которые отправили этот комментарий против этого сообщения. Я немного борюсь и нуждаюсь в советах.Сборка информации о пользователе из другой таблицы

Вот мой текущий запрос:

$q = "SELECT p.post_id, f.created_date, f.comment_id, f.comment_content, j.id 
      FROM forum_post AS p 
      INNER JOIN comment_post_join AS j ON p.post_id = j.post_id 
      INNER JOIN forum_comment AS f ON f.comment_id = j.comment_id 
      WHERE p.post_id = '$id' 
      ORDER BY created_date ASC 
     "; 

    $r = mysqli_query ($dbc, $q); // Run the query. 


    // FETCH AND PRINT ALL THE RECORDS 
    while ($row = mysqli_fetch_array($r)) { 

    echo ' 
    <div style="border-bottom: thin solid #ddd;"> 
     <p style="font-size: 13px;">'.$row["comment_content"] . '</p><p style="font-size: 12px;">' .date("F j, Y, g:i a", strtotime($row["created_date"])). '</p> 
    </div> 
    '; 

} 

Как вы можете видеть, что я беру из forum_post таблицы, как это, где живут мои посты. Я использую inner_join для ссылки на сообщение и связанные с ним комментарии, но мне также нужно получить информацию от пользователей, так как у меня также есть другая таблица user_comment_join, которая после отправки комментария также обновляет таблицу, которая создает строку и отправляет идентификатор пользователя и идентификатор комментария.

я сделать подобную вещь с фактической должности и ссылки на пользователя, делая это:

$q = "SELECT u.user_id, u.first_name, u.last_name, f.post_created, f.post_id, f.post_title, f.post_content, j.id 
      FROM users AS u 
      INNER JOIN user_post_join AS j ON u.user_id = j.user_id 
      INNER JOIN forum_post AS f ON f.post_id = j.post_id 
      WHERE f.post_id = '$id' 
     "; 

Я надеюсь, что я объяснил свою проблему здесь и любой совет было бы здорово.

Я попытался это сам вот так ...:

$q = "SELECT p.post_id, f.created_date, f.comment_id, f.comment_content, u.user_id, u.first_name, u.last_name, j.id 
      FROM forum_post AS p 
      INNER JOIN comment_post_join AS j ON p.post_id = j.post_id 
      INNER JOIN forum_comment AS f ON f.comment_id = j.comment_id 
      INNER JOIN user_comment_join AS cj ON u.user_id = cj.user_id 
      WHERE p.post_id = '$id' 
      ORDER BY created_date ASC 
     "; 

Но я получаю следующее сообщение об ошибке:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\MAMP\htdocs\functions\functions.inc.php on line 963

Который, в свою очередь, относится к этой линии ...:

while ($row = mysqli_fetch_array($r)) {

Если я запустил thi s запрос в PHPMyAdmin я получаю следующее:

Unknown column 'u.user_id' in 'field list'

+0

Так почему же я получил проголосовать и не комментировать? Brilliant ... – PhpDude

+0

Я не являюсь downvoter, но ошибка на самом деле говорит вам, что столбец не существует, поэтому запрос не работает, поэтому '$ r' является' FALSE'. Который вы бы решили с помощью простого поиска: http://stackoverflow.com/questions/2973202/mysql-fetch-array-expects-parameter-1-to-be-resource-or-mysqli-result-boole –

+0

Эй, поэтому я понимаю, что в этот момент $ r терпит неудачу, потому что с моим запросом явно что-то происходит. Мне нужна помощь с запросом больше, чем что-либо ... – PhpDude

ответ

1

Вы забыли о присоединении users таблицу. Попробуйте следующее:

$q = "SELECT p.post_id, f.created_date, f.comment_id, f.comment_content, u.user_id, u.first_name, u.last_name, j.id 
     FROM forum_post AS p 
     INNER JOIN comment_post_join AS j ON p.post_id = j.post_id 
     INNER JOIN users AS u ON u.user_id = j.user_id 
     INNER JOIN forum_comment AS f ON f.comment_id = j.comment_id 
     INNER JOIN user_comment_join AS cj ON u.user_id = cj.user_id 
     WHERE p.post_id = '$id' 
     ORDER BY created_date ASC 
    "; 
Смежные вопросы