首页 > 解决方案 > 如何设置 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 才能使其正常工作?

标签: phpmysqlsql

解决方案


你为什么不只使用一个OR?那么结果有正确的接收者和正确的发送者吗?你收到了从 X 到 Y 的所有消息以及从 Y 到 X 的所有消息

您的查询行如下所示:

 $query = "SELECT * FROM ColumnText WHERE (SenderID = '$SenderID' AND RecieverID = '$RecieverID') OR (SenderID = '$RecieverID' AND RecieverID = '$SenderID')“;

此外,我强烈建议您使用准备好的语句


推荐阅读