Несколько условий для цикличного вывода данных из таблицы

Пожалуйста, помогите! Есть таблица messages. Там столбцы from_id, to_id и messages. Делаю мини-макет мессенджера для сайта, чтобы потом его допилить, но надо разобраться в основе. Проблема в том что я не знаю как мне выводит в одном цикле while сразу несколько условий, чтобы он выдал все как нужно. Что я сделал написано ниже. Не работает, выводит только первые 2 строчки. Пожалуйста, помогите

<?php $query_messages_my = $db->query("SELECT * FROM `messages` WHERE (`to_id` = '2' AND `from_id` = '1')");
 $query_messages_him = $db->query("SELECT * FROM `messages` WHERE (`to_id` = '1' AND `from_id` = '2')");
 while(($messages_my = $query_messages_my->fetch_assoc()) && ($messages_him = $query_messages_him->fetch_assoc())) {
  ?>
         <div class="my-message">
           <?php echo $messages_my['message']; ?>
         </div>
         <div class="his-message">
           <?php echo $messages_him['message']; ?>
        </div>
 <?php } ?>

Ответы (1 шт):

Автор решения: Denis640Kb

Можно сделать таким образом (Сделал по Вашему примеру, но советую использовать предзапросы или PDO):

<?php

$servername = ""; // IP сервера
$username = "";  // Иия пользователя БД
$password = ""; // Пароль пользователя БД
$dbname = ""; // Название базы
$db = mysqli_connect($servername, $username, $password, $dbname); // подключение

$query_messages_my = $db->query("SELECT * FROM `bz` WHERE (`to_id` = '2' AND `from_id` = '1')");
$query_messages_him = $db->query("SELECT * FROM `bz` WHERE (`to_id` = '1' AND `from_id` = '2')");

$Arr1 = array();
$Arr2 = array();

foreach ($query_messages_my as $item){ // Перебираем и помещаем в свой массив.
    array_push($Arr1, $item);
}
foreach ($query_messages_him as $item1){ // Перебираем и помещаем в свой массив.
    array_push($Arr2, $item1);
}

if (count($Arr1) > count($Arr2)){ // Если в первом ответе больше значений, чем во втором, то за основу берём первый
    $count = count($Arr1);
} else { // Если во втором больше, то второй.
    $count = count($Arr2);
}
for ($i=0;$i<$count;$i++){
    if ($i > $Arr1){ // Если ключей больше, чем значений в первом массиве(брали наибольшее, чтобы всё вывести), то ставим пустое значение, чтобы не было ошибки.
        $Arr1[$i]['message'] = "";
    }
    if ($i > $Arr2){ // Если ключей больше, чем значений во втором массиве, то ставим пустое значение, чтобы не было ошибки.
        $Arr2[$i]['message'] = "";
    }
    // Выводим данные

     echo '<div class="my-message">';
     echo $Arr1[$i]['message'];
     echo '</div>';
     echo '<div class="his-message">';
     echo $Arr2[$i]['message'];
     echo '</div>';
}
→ Ссылка