外键不等于主键


foreign key is not equal to primary key

所以我的查询看起来像这个

`$dbUser = "SELECT * FROM accaount, role WHERE Username = :username AND Password = :password UNION SELECT * FROM role , accaount WHERE Role_idRole = idRole ";
$query = $conn->prepare( $dbUser);
$query->bindParam(":username", $Username);
$query->bindParam(":password", $Password);
$query->execute();`

错误是UNION SELECT * FROM role , accaount WHERE Role_idRole = idRole.我试图做的是使我的外键(Role_idRole)等于另一个名为Role的表中的主键,该表的主键为idRole。我想做的是看看你的帐户是否是管理员帐户。所以如果我是管理员,那么Name=1而不是Name=0。角色中的名称在表中。

这是我登录的完整代码

`<?php
if(!isset($_SESSION))
{
    session_start();
}
require('dbConnection.php');
    $Password = $_POST['LPassword'];
    $Username = $_POST['LUsername'];
    $dbUser = "SELECT * FROM accaount, role WHERE Username = :username AND Password = :password UNION SELECT * FROM role , accaount WHERE Role_idRole = idRole ";
    $query = $conn->prepare( $dbUser);
    $query->bindParam(":username", $Username);
    $query->bindParam(":password", $Password);
    $query->execute();
    $result = $query->fetch(PDO::FETCH_ASSOC);
    var_dump($result);
    if ($result["Username"] == $Username && $result["Password"] == $Password) {
        if($result['Name'] == 0) {
            $_SESSION['LOGINUsername'] = $Username;
            echo "Member";
        }
        $tpl->assign('USERNAME', $Username);
        if($result['Name'] == 1) {
            $_SESSION['LOGINAdmin'] = $Username;
            echo "Admin";
        }
    }
    else {
        echo "FAIL!";
}`

我知道帐户拼写错误,但这并不是错误,它在我的数据库中也是这样。这也是var转储显示的内容

阵列(大小=8)

'idAccaount'=>int 2

"用户名"=>字符串"rwere"(长度=5)

"密码"=>字符串"rwere"(长度=5)

"salt"=>字符串"380"(长度=3)

"重置"=>空

"Role_idRole"=>字符串"45"(长度=2)

'idRole'=>字符串'40'(长度=2)

"名称"=>int 1

正如你所看到的,这个人必须是一个成员,而不是一个管理员。如果我们查看idRole 45,则Name int必须为0。

我真的很困惑。

$dbUser = "SELECT accaount.Username, accaount.Password, accaount.Role_idRole, role.Name FROM accaount INNER JOIN role ON accaount.Role_idRole=role.idRole WHERE accaount.Username = :username AND accaount.Password = :password AND Role_idRole = idRole";