根据用户会话关联Mysql表

4

我需要你的帮助,编写一个脚本从两个表中获取登录用户的数据。

这是我的配置:

  • 我使用此指南创建了登录表单和会话

  • 我的文件如下:

---- Login.php(此文件包含HTML格式的登录表单)
---- db_connect.php(数据库连接文件)
---- process_login.php(控制连接数据并在登录后重定向用户的文件)
---- function.php(用于sec_session_start();和从数据库检索数据的函数)

数据库表格:

  1. members
  2. addusr

好的,问题就在这里:

第二个表格

第二个表格包含:id、姓名、姓氏、传记、日(生日天数)、月(生日月份)、年(生日年份)。

当用户注册时,程序会将用户数据打印到数据库中。当用户登录时,我需要从第二个表格中获取用户的姓名和姓氏,但是该如何从第二个表格中恢复这些数据呢?

到目前为止,我已经开发了如下内容:

function get_talkm3_nome () {
    include 'db_connect.php';

    $conn = $mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);

    $query = "SELECT addusr.nome FROM addusr, members WHERE members.username = '{$_SESSION['username']}'";
    $result = $conn->query($query);

    if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {
            echo "" . $row["nome"]. "<br>";
        }
    } else {
        echo "Si è verificato un errore, non ho trovato nulla";
    }

这个文件被存储在函数中,我调用它来打印实际登录用户的名称,但它无法正常工作,因为我得到了Fabrizio, lorenzo, test3而不是当前登录用户(我的名字)的名称。

如何解决这个问题?

谢谢。


我已经考虑过使用连接,但由于这两个表彼此无关,所以我不能使用它。 - leofabri
1
也许你应该重新设计你的数据库?你可以把所有这些字段都放到一个叫做“用户”或其他类似名称的单个表中。 - Kallum Tanton
@KallumTanton 我能理解想要将用户信息和用户凭据分开的想法,但我也能理解为了简单起见而使用一个表的做法。我还建议重新设计以帮助实现你的目标。 - Muhammad Abdul-Rahim
1
拥有多个表并没有什么问题,而且有很好的理由这样做。然而,如果你在两个表中拥有的所有数据都是一对一的直接关系,那么实际上没有必要拥有两个表,除非你试图对某些数据进行控制。在这种情况下,最好将所有内容放在同一个表中,除非出于安全原因需要保持用户信息分开。 - nomistic
1
不要在所有表格上都放置用户名,创建一个ID来链接它们。使用主键整数进行索引会更加清晰。 - nomistic
显示剩余10条评论
1个回答

1
您需要2个表格,每个表格都有一列,这些列必须在两个表格中具有相同的值,以建立它们之间的关系(外键)。 然后,对于查询,您必须使用内部连接从2个表格中获取数据。
这里是来自w3schools的一个例子http://www.w3schools.com/sql/sql_join_inner.asp。在这个例子中,外键是CustomerID列。
我建议您学习网页技术,如mysql和php,请参考这个页面。

是的,谢谢你 Dante,我很感激你的回答。你已经确认了我的想法。再次感谢你,现在我可以继续我的项目了。祝编码愉快! - leofabri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接