В настоящее время у меня есть запрос, чтобы выбрать комментарии, связанные с определенным сообщением. Мне также нужно выбрать данные пользователей, которые отправили этот комментарий против этого сообщения. Я немного борюсь и нуждаюсь в советах.Сборка информации о пользователе из другой таблицы
Вот мой текущий запрос:
$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'
Так почему же я получил проголосовать и не комментировать? Brilliant ... – PhpDude
Я не являюсь downvoter, но ошибка на самом деле говорит вам, что столбец не существует, поэтому запрос не работает, поэтому '$ r' является' FALSE'. Который вы бы решили с помощью простого поиска: http://stackoverflow.com/questions/2973202/mysql-fetch-array-expects-parameter-1-to-be-resource-or-mysqli-result-boole –
Эй, поэтому я понимаю, что в этот момент $ r терпит неудачу, потому что с моим запросом явно что-то происходит. Мне нужна помощь с запросом больше, чем что-либо ... – PhpDude