admin

如何设置phpmyadmin和SQL以通过REST-api进行消息传递?

sql

在我的数据库中,有一个名为“Chat”的表。我打算在这里存储应用程序中用户之间发送的每条消息。首先,我必须将它们存储在一个列表中(只需简单地执行aSELECT * FROMColumnText WHERE OneID ='$OneID'并从与我有消息的其他用户那里收集所有ID),但是现在我很难完成最后一部分,即一旦我看到了这两个用户之间的消息,单击一行。

我的计划是通过如下所示的呼叫收集信息:

http://myURL.com/Chat.php?UserOneID=1548&UserTwoID=1724

其中一个用户具有ID 1548,另一个具有ID 1724

我看到的第一个问题是,我将知道谁发送了该消息。然后我做了,可能会起作用的是改为执行以下操作:

首先将ID重命名为更清晰的名称SenderIDRecieverID然后将数据重命名为如下所示的位置:

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才能使其正常工作?


阅读 201

收藏
2021-07-01

共1个答案

admin

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

您的查询行将如下所示:

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

此外,我强烈建议您使用准备好的陈述

2021-07-01