php - Mysql 数据库问题

标签 php mysql

我有这张表为用户存储消息。它有 id(PK)、用户名、消息、时间、日期。当您登录到您的帐户时,它会显示您所有聊天记录的列表。但是这个数据库只显示消息。我是否必须创建另一个表以某种方式连接到第一个数据库或以获取与我聊天的人的用户名的方式进行过滤?我所说的获取用户名的意思是我有我发过消息的人的列表。有什么方法可以获得这些用户名吗?

如果不清楚,我很抱歉。如果您需要更多解释,请立即告诉我。 这个问题对我来说很复杂。

顺便说一句,这是代码:

 <div id='messages'>
        <nav>
            <ul id=''>
                <?php 
                    $m = new mysqli('localhost', 'root', 'xamppprogram', 'blue_messenger');
                    if($m === FALSE){
                        include('./errordb2.php');
                        die();
                    }

                    $sql = "SELECT * FROM messages WHERE username='$username'";
                    $results = $m->query($sql);
                    if($results->num_rows > 0){
                        while($r = $results->fetch_assoc()){
                            // What to do here?
                        }
                    } else {
                        echo "No new messages.";
                    }
                ?>
            <ul>
        <nav>
    </div>
    <div id='chat-content'>

最佳答案

您可以在表中添加另一列,例如 toUser 来存储您正在与之聊天的用户的姓名。然后你可以在你的 sql 中使用 GROUP BY toUser 条件。这将是最简单的解决方案,但正如其他人在问题的评论中所述,关系数据库将是最好的。

您最好使用准备好的语句,因为此处似乎使用了用户输入,并且会向 SQL 注入(inject)开放。

引用资料:

关于php - Mysql 数据库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39791808/

相关文章:

javascript - 数据更改时更新页面

php - Laravel - belongsToMany 高效标签计数?

mysql - 展平表以准备 Json

mysql - 仅当它没有日期高于现在的行时才从连接更新

mysql - Zabbix监控工具数据库连接问题

php - Codeigniter 3 - 从一个表中计算行数并加入

php - 不同类中的冗余 MySQL 查询

PHP打包一些数据

php - 我怎样才能改进这个 PHP MySQL 调用?

Mysql创建触发器时出错