在设计方面,我应该如何在左侧和右侧显示聊天消息

时间:2020-02-25 05:06:23

标签: php mysql

错误在第12行if($display["logged_user"]==$user)中。错误是

注意:未定义的索引:logged_user

如果我使用=代替==来比较该值,它将仅在一侧显示两个用户之间的所有聊天消息。我想在左侧显示已记录的用户消息,在右侧显示朋友消息。谢谢。

    <?php
    session_start();
    $conn = new mysqli('localhost', 'root', '', 'company');
    $query = mysqli_query($conn,"select `message` FROM `data` where 
            (`logged_user`='$_SESSION[ID]' and `name`='$_SESSION[frendid]') 
            OR 
            (`logged_user`='$_SESSION[frendid]' and `name`='$_SESSION[ID]')");
    $user=$_SESSION['ID'];
    $rows=mysqli_num_rows($query);
    if ($rows>0) {
            while($display=mysqli_fetch_assoc($query)){
            if($display["logged_user"]==$user){ 
                echo "<p id ='right'>
                    $display[message]
                    </p>";
            }
           else{    
            echo "<p id ='left'>
            $display[message]
            </p>";
            }
    }
    }
    ?>

1 个答案:

答案 0 :(得分:1)

=而非==正在将比较转换为分配。您的查询也需要更新以返回用户。还应该对其进行参数化。

$query = mysqli_prepare($conn, 'select message, logged_user FROM data where 
            (logged_user = ? and name = ?) 
            OR 
            (logged_user = ? and name = ?)');
mysqli_stmt_bind_param($query, 'ssss', $_SESSION['ID'], $_SESSION['frendid'], $_SESSION['frendid'], $_SESSION['ID']);
mysqli_stmt_execute($query);

有关更多信息,请参见https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php

name还是id吗?看来似乎永远不会匹配。