мои запросы дают два результата:
Затем я попытался получить результаты с двумя массивами с двумя циклами
while ($rowPost = mysqli_fetch_assoc($grabPostsQuery)) {
$posts[] = $rowPost;
}
while ($rowComment = mysqli_fetch_assoc($grabCommentsQuery)) {
$comments[] = $rowComment;
}
$grabPostsQuery = "SELECT * FROM posts ORDER BY postDate DESC";
$grabPostsQuery = mysqli_query($link, $grabPostsQuery);
$grabCommentsQuery = "SELECT * FROM comments ORDER BY commentDate DESC";
$grabCommentsQuery = mysqli_query($link, $grabCommentsQuery);
Затем я сделал вложенный foreach примерно так:
foreach($posts as $post) {
foreach($comments as $comment) {
echo $post['postContent']."<br>";
echo $comment['commentContent']."<br>";
}
}
Я могу получить доступ как к сообщениям, так и к комментариям, единственная проблема заключается в том, что цикл foreach повторяется несколько раз по сообщениям и комментариям, а затем отображает их дважды
Любая помощь, пожалуйста?
Есть два способа сделать это. Один с запросом на соединение (к сожалению, я не знаю структуру вашей базы данных, и при этом у меня недостаточно времени); или вы можете поместить запрос комментариев в цикл foreach.
пример
$grabPostsQuery = "SELECT * FROM posts ORDER BY postDate DESC";
$grabPostsQuery = mysqli_query($link, $grabPostsQuery);
while ($rowPost = mysqli_fetch_assoc($grabPostsQuery)) {
$post_id = $rowPost['id'];
//other variables go in here
$grabCommentsQuery = "SELECT * FROM comments WHERE comment_id = '$post_id' ORDER BY commentDate DESC";
$grabCommentsQuery = mysqli_query($link, $grabCommentsQuery);
while ($rowComment = mysqli_fetch_assoc($grabCommentsQuery)) {
//List out the returned fields
}
}
С помощью этого метода вы можете получить каждый комментарий к сообщению и его идентификатор, и дубликаты не будут возвращены. Но вам также нужно некоторое время, чтобы узнать больше о запросах SQL Join.
Извините, если этот ответ кажется немного поспешным
Просто запустите свои циклы по отдельности, а не один внутри другого...:
foreach($posts as $post) {
echo $post['postContent']."<br>";
}
foreach($comments as $comment) {
echo $comment['commentContent']."<br>";
}
Если оба ваших массива имеют одинаковую длину, вы можете сделать это следующим образом:
<?php
for ($i = 0; $i < count($posts); $i++) {
echo $posts[$i] . '<br />' . $comments[$i] . '<br />';
}