尝试从两个不同的mySQL表中检查用户凭据

时间:2012-08-29 18:26:28

标签: mysql

我正在尝试针对2个不同的表检查登录凭据,并且查询不断返回说用户不存在。我会试着解释一下我在做什么......

我有一个名为customers的表,仅存储客户数据。我有另一个名为admins的表,它只存储管理员的凭据。

我希望管理员能够使用与客户相同的登录屏幕登录网站。登录后,系统将知道他们是管理员并显示正确的小部件,以便管理网站上的产品数据。

我在admins表中插入了一个虚拟用户并运行了这个查询:

    $sql = mysql_query("SELECT EXISTS(
    SELECT 1 FROM `customers` WHERE `email` = 'johndeere@whatever.com' AND `password` = 'password'
    UNION
    SELECT 1 FROM `admins` WHERE `Email` = 'johndeere@whatever.com' AND `Password` = 'password'
    )");
    $result = @mysql_query($sql);
    if(!$result) {
        echo "User doesn't exist!";
    } else {
        echo "User exists!";
    }

当我知道他们在admins表中的事实时,这个查询回来说“用户不存在”。我确信我错过了一些非常简单的事情,并希望有人可以帮助我解决它的问题。

我仍然是mySQL和PHP的新手,但我学得很快。到目前为止,这是我无法修复或找到答案的唯一问题。非常感谢您的帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

你为什么不用,

SELECT 1 from dual where EXISTS(
    SELECT 1 FROM `customers` WHERE `email` = 'johndeere@whatever.com' AND `password` = 'password'
    UNION
    SELECT 1 FROM `admins` WHERE `Email` = 'johndeere@whatever.com' AND `Password` = 'password'
);

您的查询将返回0(false),1(true),如果您使用原始查询,则需要检查这些值

您不能使用!$result因为它只是告诉天气查询是否合法。您需要检索数据。

请参阅:http://www.php.net/manual/en/function.mysql-query.php