我的表设置为“senderid”、“receiverid”和“message”。换句话说,有很多信息在那里,但我已经设置了我的代码,只获得id的连接到我发送的id。我使用rest api调用执行此操作,如下所示:
http://myurl.com/Chat.php?UserID=18
然后,代码会将与用户进行消息传递的人的每个相反的id推出。不过,我遇到的问题是,我只想收集一次相反的id,因此如果在用户id 18和示例17之间生成了多条消息,那么json会多次将其推出,而不是仅1次。
这就是现在的样子:
{ "results":
[
{ "SenderID": "17", "RecieverID": "18" },
{ "SenderID": "18", "RecieverID": "17" },
{ "SenderID": "17", "RecieverID": "18" },
{ "SenderID": "17", "RecieverID": "18" }
]
}
在现实中,我只想把它推出一次,看看他们是否曾经互相传递过信息。这样地:
{ "results":
[
{ "SenderID": "17", "RecieverID": "18" }, //push it out once
{ "SenderID": "18", "RecieverID": "34" } //then it will carry on to push out other matched id's
]
}
发送的id是“senderid”(已发送消息)还是“receiveId”(已接收消息)并不重要。我只想看看他们有没有通过比较两个id发过信息。
这是我的密码:
<?php
class ConnectionInfo
{
public $conn;
public function GetConnection() {
$this->conn = mysqli_connect("serv", "user","pass", "db") or die(mysqli_error($mysql_pekare));
}
}
$connectionInfo = new ConnectionInfo();
$connectionInfo->GetConnection();
if (!$connectionInfo->conn)
{
echo 'No Connection';
}
else
{
$UserID = $_GET['UserID'];
$query = "SELECT * FROM MyTable WHERE (SenderID = '$UserID') OR (RecieverID = '$UserID')";
$stmt = mysqli_query($connectionInfo->conn, $query);
if (!$stmt)
{
echo 'Query failed';
}
else
{
$contacts = array();
while ($row = mysqli_fetch_array($stmt))
{
$contact = array("SenderID" => $row['SenderID'],"RecieverID" => $row['RecieverID']);
array_push($contacts, $contact);
}
echo json_encode(array('results' => $contacts), JSON_PRETTY_PRINT);
}
}
?>
然后,使用匹配的id加载一个对话,我用另一个线程解决了这个对话:如何通过restapi设置phpmyadmin和sql进行消息传递?
1条答案
按热度按时间oxalkeyp1#
OR
s在WHERE
子句有时会生成重复项,并且表可能包含重复项。您的查询应该删除它们。试试这个如果给定一个userid,您需要一个向该用户发送消息和/或从该用户接收消息的所有其他用户的列表,请执行以下操作