登录页面检查两个不同表中的用户名


Login page check username from two different tables

我有一个网站,它有两种类型的用户,医生和病人。我将有关这两种类型的用户的信息存储在两个不同的表中。当用户登录时,我想检查用户提交的登录名是否存在于第一个表(例如:患者)或第二个表(例如:医生)中。我该怎么做?

下面是我的代码的一部分,其中包含我编写的 SELECT 语句:

$query = 
"SELECT username, password 
 FROM patient 
 WHERE username='$username' AND password='$password'";

我目前正在从患者桌上SELECT,但我想知道如何从病床和医生桌上SELECT

你能帮我吗?

您可以使用

MySQL的UNION()函数执行此操作。

$query = "SELECT username, password 
    FROM table_1 
    WHERE username='$username' AND password='$password' 
    UNION 
    SELECT username, password 
    FROM table_2 
    WHERE username='$username' AND password='$password'";

Nota:字符串变量必须用引号括起来。

不过,我必须指出,此方法对SQL注入开放,我希望您不要以纯文本形式存储密码。

如果您以纯文本形式存储密码,则强烈建议不要这样做,并且容易使您的网站受到损害。

建议使用 CRYPT_BLOWFISH 或 PHP 5.5 的password_hash()函数。
对于 PHP <5.5,请使用 password_hash() compatibility pack

另外,在SQL注入方面,将mysqli与预准备语句一起使用,或将PDO与预准备语句一起使用,它们要安全得多

您的 DBMS 是否支持 UNION 语句?

$query = "SELECT username,password FROM patient WHERE username='$username' AND password='$password' UNION SELECT username,password FROM othertable WHERE username='$username' AND password='$password";