Возможно, когда обе таблицы имеют одну и ту же строку.Если две таблицы имеют разное количество строк, то это ложно, но не показывает никакой ошибки.
Вот так у меня нормально работает.
$conn = new mysqli("localhost", "root", "", "stack_over_flow");
if ($conn->connect_errno) {
echo "Failed to connect to MySQL: " . $conn->connect_error;
}
$res1 = $conn->query("SELECT * FROM abc");
$res2 = $conn->query("SELECT * FROM xyz");
while(($row1 = $res1->fetch_assoc()) && ($row2 = $res2->fetch_assoc())){
echo '
<tr>
<td>'.$row1['a'].'</td>
<td>'.$row1['b'].'</td>
<td>'.$row1['c'].'</td>
</tr>
<tr>
<td>'.$row2['val'].'</td>
</tr>
';
}