首页 > 解决方案 > 删除聊天的逻辑语句和条件

问题描述

我有使用聊天应用程序的项目。我已经在这里阅读了有关如何从用户那里删除消息的答案,但它不会从另一个用户那里删除。尽管如此,我还是坚持这样做。我可以通过不使用删除行但仅更新 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;
        }

    }
}

我不知道我该怎么做。我希望我能在这里找到指南,谢谢。对不起我的英语不好。

标签: phpmysql

解决方案


我认为构建聊天应用程序的正确方法是构建一个表chats,其中包含一个userFromIduserToId。当您收到聊天时,您会发送请求get * from chat where userFromId=.. and userToId =.....,而当您删除聊天时,您也会这样做:delete * from chat where..我不知道您是如何构建它的,但这样您就不会遇到“从一个用户删除的聊天,而不是从另一个用户删除的聊天”的问题..


推荐阅读