php - 删除聊天的逻辑语句和条件
问题描述
我有使用聊天应用程序的项目。我已经在这里阅读了有关如何从用户那里删除消息的答案,但它不会从另一个用户那里删除。尽管如此,我还是坚持这样做。我可以通过不使用删除行但仅更新 idSender(idPengirim) 字段来删除它。idReceiver(idPenerima) 字段仍然存在。此外,它总是从两个用户中删除。这是方法:
public function deleteChat($pengirim,$penerima,$idChat){
$query = $this->conn->prepare("SELECT * FROM mess WHERE idChat=:idchat");
$query->execute(array(":idchat" => $idChat));
while($row=$query->fetch(PDO::FETCH_ASSOC)){
$row['idPengirim'] = $pengirim;
$row['idPenerima'] = $penerima;
if($pengirim == -1 && $penerima == -1){
$query = $this->conn->prepare("DELETE FROM mess WHERE idChat = :idchat");
$query->execute(array(":idchat"=>$idChat));
}
if ($pengirim!=-1){
$query = $this->conn->prepare("UPDATE mess SET idPengirim = -1");
$query->bindParam(":idchat",$idChat);
$query->execute();
return $query;
}
if ($penerima!=-1){
$query = $this->conn->prepare("UPDATE mess SET idPenerima = -1");
$query->bindParam(":idchat", $idChat);
$query->execute();
return $query;
}
}
}
我不知道我该怎么做。我希望我能在这里找到指南,谢谢。对不起我的英语不好。
解决方案
我认为构建聊天应用程序的正确方法是构建一个表chats
,其中包含一个userFromId
和userToId
。当您收到聊天时,您会发送请求get * from chat where userFromId=.. and userToId =.....
,而当您删除聊天时,您也会这样做:delete * from chat where..
我不知道您是如何构建它的,但这样您就不会遇到“从一个用户删除的聊天,而不是从另一个用户删除的聊天”的问题..
推荐阅读
- javascript - time.minutes 和 time.seconds 未定义
- bash - npm run build 命令后 shell 脚本不继续
- angular - 每个分支的 Azure Devops azure-pipelines.yml
- azure - 将应用程序部署到 Web 应用程序后如何更改应用程序服务的主页
- selenium - 如何获取 Web 元素值并将其与 Robot Framework 中的数字进行比较?
- javascript - Apexchart-reactjs 库在标签中不支持阿拉伯语
- excel - VBA 查找行号的问题
- sql - SQL Server / 如何从两个日期时间中对持续时间进行排序?
- python - SymPy中的点平面距离
- java - 有什么方法可以通过 Gradle 运行任意 main 方法吗?