PHP MYSQL JS Что делать не работает обновление сообщений?

У меня есть код для вывода всех сообщений я хочу чтобы они обновлялись в реальном времени я использую knockout js но не работает в консоли хрома пишет ошибку

Uncaught (in promise) TypeError: data.sort is not a function at setUpMessageFetcher (profile.php?id=2:122:14)

profile.php:
$receiver = $myrow['login'];
$tmp = mysql_query("SELECT * FROM messages WHERE receiver= '$receiver'",$db); 
$messages = mysql_fetch_array($tmp);//извлекаем сообщения пользователя, сортируем по идентификатору в обратном порядке, т.е. самые новые сообщения будут вверху   
do {   
    echo "
    <table>
    <tr>
    
    <td>
        Автор: ".$messages['sender']." <a href='profile.php?id=".$messages['sender_id']."'>Профиль автора</a><br>
        Дата: ".$messages['date']."<br>
        Сообщение: 
        <div id='messages' data-bind='foreach: messages'>
        <div class='message'>
        <b data-bind='text: sender'></b><span data-bind='text: text'></span>
        </div>
        </div>
    </td>  
    </tr>
    </table>
    ";
}
while($messages = mysql_fetch_array($tmp));
}
    <script>
    window.currentFrom = 0;
    async function setUpMessageFetcher(arr) {
        let data = await (await fetch(`/mes.php?id=<?php echo $myrow["id"]; ?>&from=${window.currentFrom}`)).json();
        data.sort(function(a, b) {
            return a.id - b.id;
        });
        
        for(let i = 0; i < data.length; i++) {
            let msg = data[i];
            if((i + 1) == data.length)
                window.currentFrom = msg.id;
            
            arr.push(msg);
        }
        
        window.setTimeout(setUpMessageFetcher, 1000, arr);
    }
    
    function MessagesModel() {
        this.messages = ko.observableArray([]);
        setUpMessageFetcher(this.messages);
    }
    
    ko.applyBindings(new MessagesModel());
</script>

mes.php:
$id = $_GET['id'];
$my = $_SESSION['login'];
$result = mysql_query("SELECT * FROM users WHERE id='$id'",$db); 
$myrow = mysql_fetch_array($result);
if (empty($myrow['login'])) { exit("Пользователя не существует! Возможно он был удален.");}
$receiver = $myrow['login'];
$tmp = mysql_query("SELECT * FROM messages WHERE receiver= '$receiver' AND id > $_GET[from]",$db); 
header('Content-Type: application/json');

$results = [];
while($row = mysql_fetch_array($tmp, mysql_fetch_assoc) {
    $results[] = ["id" => $row["id"], "sender_id" => $row["sender_id"], "sender" => $row["sender"], "text" => $row["message"]];
}

echo json_encode($results, JSON_UNESCAPED_UNICODE);

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