1

好的,所以我的问题是这段代码什么都不返回,至少它不打印任何东西。唯一似乎有效的是 $user_email 可以打印用户的电子邮件。

代码:

        $user_email = $_SESSION['user_email'];

        $query = $db->prepare("SELECT u.username, g.color, g.name FROM `user` u JOIN `group` g ON g.id = u.id WHERE u.email = :email");

        $query->bindParam(':email', $user_email, PDO::PARAM_STR);

        $query->execute();

        $row = $query->fetch();
        $user_username = $row['username'];
        $group_color = $row['color'];
        $group_name = $row['name'];
        print "Values: ".$row['username']." | ".$row['name']." <br>";

“用户”表包含 7 个不同的键:

id(bigint,主键,auto_increment),组(int),电子邮件(varchar),密码(varchar),用户名(varchar),名称(varchar),验证(int)。

“组”表包含 3 个不同的键:

id(bigint、主键、auto_increment)、颜色(varchar)、名称(varchar)。

这就是桌子里面的全部内容。

4

1 回答 1

1

在我看来查询应该是

SELECT u.username, g.color, g.name
FROM `user` u
INNER JOIN `group` g
    ON u.`group` = g.id
WHERE u.email = :email

此外,由于user.group似乎是 的外键group.id,它也应该是bigint,而不是int(外键应该与其目标主键的类型相同)。

还...

group对表和列来说都是一个糟糕的名字。尽量避开保留字。我会选择user_group表格和group_id列。

于 2013-09-17T04:13:28.823 回答