как посчитать сообщения нескольких пользователей в php mysqli - PullRequest
1 голос
/ 12 января 2020

Я пытаюсь отобразить один за другим разговор пользователей в PHP MYSQL. Мой скрипт подсчитывает все входящие сообщения от пользователей. но я хочу, чтобы один за другим отображались непрочитанные сообщения пользователей.

пример: я хочу получить вот так.

user1 unread messages 2

user2 unread messages 6

user3 unread messages 1

Мой скрипт отображает все входящие сообщения всех пользователей в одну строку Как все сообщения - 9

Моя таблица в личку

 id  from_id     to_id    msg   sent_date  read   

Вот мой исходный код

<?php
if (isset($_SESSION['userid'])) {
$session_id = $_SESSION['userid'];
}
if ($stmt = $con->prepare("SELECT COUNT(*) unread
FROM  pm where to_id=? and read='0'")){
$stmt->bind_param('s',$session_id);
$stmt->execute();
}
$result = $stmt->get_result();
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){

echo $row['unread'];
}}
?>

1 Ответ

0 голосов
/ 12 января 2020

Измените ваш SQL как:

$sql = "SELECT from_id, COUNT(*) unread FROM pm WHERE to_id=? AND read='0' GROUP BY from_id";
if ($stmt = $con->prepare($sql)){
    $stmt->bind_param('s',$session_id);
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()){
        echo 'User ' . $row['from_id'] . ' - ' . $row['unread'];
    }
}

Также обратите внимание, что я переместил все логики в if, потому что если ваш prepare не удалось - бесполезно для get_result и перебрать результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...