首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >php查询函数重复数据

php查询函数重复数据
EN

Stack Overflow用户
提问于 2018-08-15 21:08:03
回答 1查看 49关注 0票数 0

我正在尝试使用php和mysql制作一个facebook风格的聊天页面。但是我的查询结果有问题。聊天台看起来是这样的。

我编写了这个函数,用于获取用户日志中的消息。

代码语言:javascript
运行
AI代码解释
复制
/*Get Messges*/
public function Get_Messages($toid,$logedInUserID){
   // Here is loged in user id the id is 2
   $logedInUserID = mysqli_real_escape_string($this->db,$logedInUserID);
   // Loged in user id talked with $toid before the id is 3
   $toid = mysqli_real_escape_string($this->db,$toid);
   $logedInUserID = '2';  
   $toid = '3';

   $query = mysqli_query($this->db,"SELECT DISTINCT C.msg_id,C.from_user_id, C.to_user_id, C.message_created_time, C.message_text, U.user_name, U.user_fullname FROM users U, chat C WHERE C.from_user_id='$logedInUserID' AND C.to_user_id = '$toid' ORDER BY C.msg_id ASC LIMIT 20") or die(mysqli_error($this->db));
   while($row=mysqli_fetch_array($query,MYSQLI_ASSOC)) {
        // Store the result into array
        $data[]=$row;
     }
     if(!empty($data)) {
        // Store the result into array
        return $data;
     }
}

以及获得结果的前环

代码语言:javascript
运行
AI代码解释
复制
<?php 
    $GetAllMessages = $Get->Get_Messages($toUserID,$uid);
     if($GetAllMessages){
         echo '<span class="all_messages">';
      foreach($GetAllMessages as $getMessage){
         $getTexts = $getMessage['message_text']; 
         $getToUID = $getMessage['to_user_id']; 
         $from_to_class= 'you';
         if($getToUID == $uid){
             $from_to_class = 'friend';
         } 
         echo '<div class="messageBox_body"><div class="'.$from_to_class.'">'.$getTexts.'</div></div>';
       }
         echo '</span>';
      } 
?>

所以问题是我的查询重复了消息,比如下面的屏幕截图,也就是没有显示在用户消息中的查询。

为了更好地描述:

代码语言:javascript
运行
AI代码解释
复制
$logedInUserID = '2';
$toid = '3';

显示带有重复的$toid = '3';消息的查询,而不显示来自数据的$logedInUserID = '2';

我的查询中有什么问题:

代码语言:javascript
运行
AI代码解释
复制
SELECT DISTINCT C.msg_id,C.from_user_id, C.to_user_id, C.message_created_time, 
C.message_text, U.user_name, U.user_fullname FROM users U, chat C WHERE 
C.from_user_id='$logedInUserID' AND C.to_user_id = '$toid' 
ORDER BY C.msg_id ASC LIMIT 20

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-15 21:47:50

在给定的查询中,您似乎试图从两个表用户Chat获取详细信息,但是您还没有编写连接条件。

请使用$logedInUserID = '2';$toid =‘3’来尝试这个SQL查询;

代码语言:javascript
运行
AI代码解释
复制
SELECT DISTINCT C.msg_id, 
                C.from_user_id, 
                C.to_user_id, 
                C.message_created_time, 
                C.message_text, 
                U.user_name, 
                U.user_fullname 
FROM   users U 
       JOIN chat C 
         ON U.id = C.from_user_id 
WHERE  C.from_user_id = '$logedInUserID' 
       AND C.to_user_id = '$toid' 
ORDER  BY C.msg_id ASC 
LIMIT  20 

如果您想要与两个用户进行完整的聊天,只需在$logedInUserID = '3';$toid = '2‘的Sql查询中使用"OR“条件即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51869948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档