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>";

「user」テーブルには、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, notであるint必要があります (外部キーは、ターゲットの主キーと同じタイプである必要があります)。

また...

groupテーブルと列の両方のひどい名前です。予約語を避けるようにしてください。私user_groupはテーブルとgroup_id列に行きます。

于 2013-09-17T04:13:28.823 に答える