计算php mysqli中两个用户的消息数
我正在PHP MYSQLI中创建两个用户之间的消息对话脚本。我想知道如何计算两个用户之间未读的消息。我的脚本没有显示任何内容 我的数据库pm表计算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
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中的关键字。这个问题可以通过使用符号`asread
来解决。另一个建议是直接使用数据库,直到得到预期的结果,然后将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));