php - 如何设置 phpmyadmin 和 SQL 以通过 REST-api 进行消息传递?
问题描述
在我的数据库中,我有一个名为“聊天”的表。在这里,我打算将用户之间发送的每条消息存储在我的应用程序中。首先,我必须将它们存储在一个列表中(只需简单地做一个SELECT * FROM ColumnText WHERE OneID = '$OneID'
并从我与之有消息的其他用户那里收集所有 ID)但我现在很难完成最后一部分,即一旦我查看这两个用户之间的消息单击一行。
我的计划是通过如下所示的调用来收集信息:
http://myURL.com/Chat.php?UserOneID=1548&UserTwoID=1724
一个用户有 ID1548
和另一个1724
.
我看到的第一个问题是我会知道谁发送了消息。然后我所做的并且可能会起作用的是做这样的事情:
首先将 ID 重命名为更清晰的名称SenderID
,而RecieverID
不是数据看起来像这样的位置:
SenderID = 1548
RecieverID = 1724
和
SenderID = 1724
RecieverID = 1548
我为它编写了如下代码,其中我使用 aUNION
来尝试将两个 ID 的数据收集在一起,而不仅仅是一个 ID,调用看起来像这样:
http://myURL.com/Chat.php?SenderID=1548&RecieverID=1724
http://myURL.com/Chat.php?RecieverID=1548&SenderID=1724
<?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
{
$SenderID = $_GET['SenderID'];
$RecieverID = $_GET['RecieverID'];
$query = "(SELECT * FROM ColumnText WHERE SenderID = '$SenderID') UNION (SELECT * FROM ColumnText WHERE RecieverID = '$RecieverID')";
$stmt = mysqli_query($connectionInfo->conn, $query);
if (!$stmt)
{
echo 'Query failed';
}
else
{
$contacts = array();
while ($row = mysqli_fetch_array($stmt))
{
$contact = array("Messages" => $row['Messages']);
array_push($contacts, $contact);
}
echo json_encode(array('results' => $contacts), JSON_PRETTY_PRINT);
}
}
?>
问题在于“UNION”似乎没有奏效。SenderID
即使 RecieverID 与我发送到脚本的数据不匹配,我似乎也只能从行中获取所有数据。
我目前的方法是正确的方法吗?如果是这样,我需要如何调整我的 phpscript 才能使其正常工作?
解决方案
你为什么不只使用一个OR
?那么结果有正确的接收者和正确的发送者吗?你收到了从 X 到 Y 的所有消息以及从 Y 到 X 的所有消息
您的查询行如下所示:
$query = "SELECT * FROM ColumnText WHERE (SenderID = '$SenderID' AND RecieverID = '$RecieverID') OR (SenderID = '$RecieverID' AND RecieverID = '$SenderID')“;
此外,我强烈建议您使用准备好的语句
推荐阅读
- javascript - 在我的网站上播放视频播放器时在网站背景中关闭和打开
- c++ - 使用 OpenCV 3 C++ 缩放和减去图像存在一个不清楚的问题
- python - 键入错误以在 django rest 框架中创建和更新我的列表
- python - pandas read_csv - 从某一行开始每隔一行跳过
- amazon-web-services - DynamoDB Cloudformation 权限
- python - 使用 python 脚本为每个索引获取 aws es 快照时出现问题
- javascript - style.animationDuration 不适用于 javascript。尝试使用 javascript 添加 css 属性
- html - 如果没有直接文件链接,为什么 HTML5 视频搜索不起作用?
- firebase - 从 vuejs 中的云 Firestore 获取数据时如何显示微调器?
- c# - 身份服务器 4 和用户权限