计算php mysqli中两个用户的消息数

计算php mysqli中两个用户的消息数,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我正在PHP MYSQLI中创建两个用户之间的消息对话脚本。我想知道如何计算两个用户之间未读的消息。我的脚本没有显示任何内容 我的数据库pm表 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

我正在PHP MYSQLI中创建两个用户之间的消息对话脚本。我想知道如何计算两个用户之间未读的消息。我的脚本没有显示任何内容

我的数据库pm表

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;
  }
}
?>

我正在两个用户之间创建消息对话脚本

我想这样说:

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还是从其他方式)。

显示如下消息致命错误:调用成员函数get\u result()关于C:\xampp\htdocs\demo\npm\cons.php中的布尔值,第392行,我不知道如何添加它。您可以添加到我的代码plz中吗bro@previn:请检查
prepare()
execute()
之后是否有错误,然后共享相关的SQL错误消息。我是这样添加的,但只显示零$SQL=(“选择总和(seen=0))cnt_未从pm读取,其中(pm.from_id=from_id和pm.to_id=to_id)或(pm.from_id=from_id和pm.to_id=?)@previn:请完全按照提供的方式运行查询。我的查询需要两个参数
:userid1
:userid2
,您的只有一个。我选中了仅显示零值。第一个问题是使用“read”作为字段名,而它是mysql中的关键字。这个问题可以通过使用符号`as
read
来解决。另一个建议是直接使用数据库,直到得到预期的结果,然后将SQL移到PHP代码中。
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));