我正在尝试使用php和mysql制作一个facebook风格的聊天页面。但是我的查询结果有问题。聊天台看起来是这样的。
我编写了这个函数,用于获取用户日志中的消息。
/*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;
}
}
以及获得结果的前环
<?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>';
}
?>
所以问题是我的查询重复了消息,比如下面的屏幕截图,也就是没有显示在用户消息中的查询。
为了更好地描述:
$logedInUserID = '2';
$toid = '3';
显示带有重复的$toid = '3';
消息的查询,而不显示来自数据的$logedInUserID = '2';
。
我的查询中有什么问题:
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
发布于 2018-08-15 21:47:50
在给定的查询中,您似乎试图从两个表用户和Chat获取详细信息,但是您还没有编写连接条件。
请使用$logedInUserID = '2';$toid =‘3’来尝试这个SQL查询;
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“条件即可。
https://stackoverflow.com/questions/51869948
复制相似问题