【发布时间】:2022-01-16 06:28:43
【问题描述】:
我正在使用 php 和 ajax 创建一个消息传递网站。
获取对话时出现问题。
问题在于,每当两个用户在他们之间聊天时,就会有两个不同的行带有 id;
例子
A和B在聊天,只写了4条消息
消息数据库是这样的
id senderid recieverid
1 a.id b.id
2 b.id a.id
3 b.id a.id
4 a.id b.id
我的目标是使用此代码获取记录
SELECT DISTINCT senderid, recieverid from messages WHERE (senderid = '".$pageowner."' OR recieverid='".$pageowner."')
$pageowner 是登录的用户;
用这种方法我得到两个相同的对话
ab 和 ba
代码在页面上给了我两个对话,我只想得到一个结果;
我的整个php代码是这样的
if(isset($_POST['id'])){
include 'config.php';
$pageowner = $_POST['id'];
$sql = "SELECT DISTINCT senderid, recieverid from messages WHERE (senderid = '".$pageowner."' OR recieverid='".$pageowner."')";
$result = mysqli_query($connect, $sql);
$conversations = mysqli_fetch_all($result);
$output = "";
foreach($conversations as $conversation){
$senderonmessages = $conversation[0];
$recieveronmessages = $conversation[1];
if($pageowner == $senderonmessages){
$convname = $recieveronmessages;
}else{
$convname = $senderonmessages;
}
$sql = "SELECT id, name, surname, userimage FROM users WHERE id='".$convname."' ORDER BY id" ;
$resconv = mysqli_query($connect, $sql);
$user = mysqli_fetch_assoc($resconv);
$output .= '
<div class="conversationuser" id='.$user['id'].'>
<img src="'.$user['userimage'].'">
<span id="status"></span>
<div class="conv-info">
<h4><a href="">'.$user['name'].' '.$user['surname'].'</a></h4>
<p>Axirinici yazdigim mesaj <span id="time">10:34 AM</span></p>
</div>
<div class="conv-additional-info">
<span id="notif">1</span>
<i class="fas fa-ellipsis-v"></i>
</div>
</div>';
}
echo $output;
}
【问题讨论】:
-
你想得到什么?您对 SQL 注入持开放态度,使用参数化查询和准备好的语句。
id, name, surname, userimage也可以在第一次查询时使用join完成。 -
我想获得一行进行对话,数据库给了我从 a 到 b 和从 b 到 a 的两条记录,但我只想要一个
-
当您在 DB 中运行查询时,您会得到 8 行还是 4 行?问题可能是获取所有返回的数字和关联,因为没有定义返回方法
标签: php html jquery sql messaging