首页 > 解决方案 > 查询数据库的行,如果返回结果,检查列是否 = $_SESSION 值,然后做点什么?

问题描述

我是 PHP 和 MySQL 的初学者。我正在尝试制作一个聊天应用程序,用户可以在其中打开他们的聊天线程并显示消息。我正在尝试查询messages聊天message并在适当的div块中回显消息。是否可以If statement检查$_SESSION['uid']列是否为真,然后在其中输出消息?然后为每一行回显它?提前抱歉,我真的很新,所以我不知道所有正确的程序和 SQL 命令。谢谢!

session_start();
$stmt = $conn->prepare("
     SELECT message from messages WHERE conv_id=?
     AND (user_send=? OR user_receive=?)
     ORDER BY timestamp ASC
                       ");
$stmt->bind_param('iii', $_POST['conv_id'], $_SESSION['uid'],$_SESSION['uid']);
$stmt->execute();
$stmt->bind_result($message);
$message_right = '';
$message_left = '';
     while($stmt->fetch()){
        if (user_send = $_SESSION['uid']){
$message_right .= '<div class="display-on-right">'.$message.'</div>';
echo $message_right;
          }elseif(user_receive = $_SESSION['uid']){
$message_left .= '<div class="display-on-left">.$message.</div>';
echo $message_left;
          }
}

标签: phpmysqlsessionmysqli

解决方案


你所做的很简单。

将您想要的列添加到查询中,然后您将能够在从查询中获取结果后访问它。

$stmt = $conn->prepare("
     SELECT message, user_send, user_receive from messages WHERE conv_id=?
     AND (user_send=? OR user_receive=?)
     ORDER BY timestamp ASC");

$stmt->bind_result($message, $user_send, $user_receive);

if ($user_send == $_SESSION['uid']){ //single equals to is for assigning. double is for comparing
   //do something
}

推荐阅读