Php 无法从发送方和接收方的数据库服务器打印聊天室消息数据

Php 无法从发送方和接收方的数据库服务器打印聊天室消息数据,php,mysqli,Php,Mysqli,我的数据库中有一个名为chat\u message的表, 我在聊天信息列中存储发送者id为来自用户id,接收者id为至用户id,以及聊天信息 在这里,我使用此代码获取所有的聊天信息 <?php session_start(); require_once('include/dbcon.php'); $session_to_user_id = $_SESSION['session_to_user_id']; $session_id = $_SESSION['id']; // fetchin

我的数据库中有一个名为
chat\u message
的表,

我在
聊天信息
列中存储发送者id为
来自用户id
,接收者id为
至用户id
,以及
聊天信息

在这里,我使用此代码获取所有的
聊天信息

<?php 
session_start();
require_once('include/dbcon.php');
$session_to_user_id = $_SESSION['session_to_user_id'];
$session_id = $_SESSION['id'];
// fetching chat message of sender
$query = "SELECT * FROM `chat_message` WHERE `from_user_id`='$session_id' AND `to_user_id` = '$session_to_user_id' order by `chat_message_id` asc ";
// fetching chat message of receiver
$query1 ="SELECT * FROM `chat_message` WHERE `from_user_id`='$session_to_user_id' AND `to_user_id` = '$session_id' order by `chat_message_id` asc ";
$run = mysqli_query ($con,$query);
$run1 = mysqli_query($con,$query1);
while($data = mysqli_fetch_assoc($run) AND $data1 = mysqli_fetch_assoc($run1)){
    $chat_message = $data['chat_message'];
    $chat_message1 = $data1['chat_message'];
    ?>
    <p>

        <div class="chat">
            <div class="bubble you black-text">
            <?php                  
                   echo $chat_message;
                 ?>
            </div>

            <div class="bubble me black-text">
                 <?php
                 echo $chat_message1;
                 ?>
            </div>
        </div>
    </p>
<?php 
}
?>


代码正在运行,但是

当一个人向另一个人发送消息时,该消息是 显示到聊天框中

但是,当他再次向第二个用户发送消息时,该消息是无效的 不显示

但当第一个用户和第二个用户在队列中发送单个消息时 剧本写得很好

但是当用户发送多条消息时,问题就出现了

在这里,我只想在右侧打印发件人的聊天室信息,在左侧打印收件人信息

最后,我使用division
chat
在右侧打印发送者的
chat\u消息
,在左侧打印接收者消息。

<?php 
session_start();
require_once('include/dbcon.php');
$session_to_user_id = $_SESSION['session_to_user_id'];
$session_id = $_SESSION['id'];
// fetching chat message of sender and receiver both.
$query = "SELECT * FROM `chat_message` WHERE (`from_user_id`='$session_id' AND `to_user_id` = '$session_to_user_id') || (`from_user_id`='$session_to_user_id' AND `to_user_id` = '$session_id') order by `chat_message_id` asc ";
$run = mysqli_query($con,$query);
while($data = mysqli_fetch_assoc($run)){
    $chat_message = $data['chat_message'];
    $from_user_id = $data['from_user_id'];
    $to_user_id = $data['to_user_id'];
    ?>
    <p>

        <div class="chat">
        <?php if($from_user_id == $session_id){ ?>
            <div class="bubble you black-text">
            <?php                  
                    echo $chat_message;
                 ?>
            </div>
       <?php } ?>

       <?php if($from_user_id !== $session_id){ ?>
            <div class="bubble me black-text">
            <?php                  
                    echo $chat_message;
                 ?>
            </div>
       <?php } ?>
        </div>
    </p>
<?php 
}
?>

您的代码易受SQL注入攻击。您应该使用准备好的语句。@Dharman如果输入是通过会话变量进行的,它怎么会有漏洞?我没有看到任何GET或POST变量连接字符串。在接受GET或POST数据时,但在将变量数据放入SQL查询时,代码不易受攻击。在本例中,您有来自会话的变量,而不是像您应该的那样绑定它们,而是直接将它们放入SQL中,使代码易受攻击。@user1888089您从何处得到这样的想法?注入也可以在代码内部进行,而不需要任何外部交互。见以下帖子: