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

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

таблица базы данных в моей таблице

id  from_id     to_id    msg               sent_date              read     
1   2           3        hi how are you?   2019-12-05 04:14:20    1                
2   3           2        fine              2019-12-05 05:15:58    0               
3   2           3        hi                2019-12-05 03:20:34    1                  
4   5           2        hi                2019-12-05 08:30:40    0    

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

<?php
$unread_messages = 0;       
if (isset($_SESSION['userid'])) {
    $session_id = $_SESSION['userid'];
}

$sql =  ("SELECT  COUNT(*) AS unread_messages
FROM    pm
WHERE   pm.to_id = ? and pm.from_id=from_id
        AND read = 0");
if ($stmt = $con->prepare($sql)) {
 $stmt->bind_param('i', $session_id);
 $stmt->execute();
}

$result = $stmt->get_result();
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){
    echo $unread_messages;
  }
}
?>

Ответы [ 2 ]

1 голос
/ 08 января 2020

Я создаю сценарий беседы между двумя пользователями.

Я бы сформулировал это следующим образом:

select sum(*) cnt_unread
from pm
where 
    read = 0
    and (
        (pm.from_id = :userid1 and pm.to_id = :userid2)
        or (pm.from_id = :userid2 and pm.to_id = :userid1)
    )

Это дает вам количество непрочитанных сообщений между :userid1 и :userid2 (от пользователя 1 до пользователя 2 или наоборот).

0 голосов
/ 08 января 2020
SET @u1 = 2;  -- id of first user
SET @u2 = 3;  -- id of 2nd user

SELECT count(`read`) as unread FROM pm 
WHERE `read` = 0 AND (from_id in (@u1,@u2) OR to_id in (@u1,@u2));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...