查询数据库中的行,如果返回结果,检查 column = $_SESSION 值,然后做些什么?[复制]

Query database for rows, if returns result, check if column = $_SESSION value, then do something? [duplicate]

提问人: 提问时间:3/24/2020 最后编辑:Funk Forty Niner 更新时间:3/24/2020 访问量:50

问:

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

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;
          }
}
php mysql 会话 mysqli

评论

0赞 Funk Forty Niner 3/24/2020
与预期的结果相比,您现在得到了什么结果?启用错误报告和可能的错误。mysqli_error($conn)
0赞 3/24/2020
没有得到任何结果,我有点新。我为每个问号绑定了两次 SESSION。我知道我不能明确地说“如果列=值。我只是不知道该怎么做
0赞 Rotimi 3/24/2020
什么是 ?user_send
0赞 3/24/2020
消息行中的列名,user_receive,我正在尝试查看该列名是否等于该行的会话值
0赞 Your Common Sense 3/24/2020
“我不知道所有正确的程序”实际上并不是一个借口。您应该使用一些教程或书籍来学习。任何教程中都涵盖了这些基本内容。也就是说,你的代码比平均水平要好得多。

答:

-2赞 2 revsAkintunde-Rotimi #1

你所做的很简单。

将所需的列添加到查询中,然后就可以在从查询中获取结果后访问它。

$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
}

评论

0赞 3/24/2020
是的,但我需要根据它们添加到数据库的顺序正确排序它们。以及显示在右侧的当前发送用户和左侧显示的当前接收用户