错误在第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>";
}
}
}
?>
答案 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吗?看来似乎永远不会匹配。