php - 查询数据库的行,如果返回结果,检查列是否 = $_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;
}
}
解决方案
你所做的很简单。
将您想要的列添加到查询中,然后您将能够在从查询中获取结果后访问它。
$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
}
推荐阅读
- flask - sqlalchemy.orm.exc.DetachedInstanceError:父实例
不绑定到会话 - visual-studio-code - VScode与WSL连接“与终端的pty主机进程的连接无响应,终端可能停止工作。”
- c++ - c ++计算导致当前函数的函数调用的深度
- excel - 为什么=isnumber(当子字符串为空时,搜索函数返回TRUE
- java - Spring Tool Suite 4 如何更改部署服务器
- wordpress - 有谁知道如何解决这一问题?
- python-3.x - python3 - 成功将 CSV 文件读入 2D Arrary 后 - 如何按索引打印单个单元格?
- flutter - 在不滚动的情况下更改 listviewbuilder 中的项目状态
- pyspark - 在 Databricks 笔记本中通过 pyspark 读取 url
- android - 如何获得多个 Spinner 值?