我可以在两个表中搜索用户名吗?

时间:2012-01-06 16:05:39

标签: php sql

我正在使用以下查询在“雇主”表中查找用户:

$username = mysql_real_escape_string($username);
$query = "SELECT password, salt
        FROM Employer
        WHERE Employer_Name = '$username';";

我有第二个名为Clients的表(带有密码和盐字段以及username字段),是否可以在两个表中搜索单个用户名?

(如果需要更多信息,请告诉我们)

5 个答案:

答案 0 :(得分:5)

我认为你需要的是UNION

SELECT password, salt, 'employer' as user_type
FROM Employer
WHERE Employer_Name = '$username'
UNION
SELECT password, salt, 'client' as user_type
FROM Clients
WHERE Clients_Name = '$username'

答案 1 :(得分:1)

你应该在这里使用UNION。

SELECT password, salt FROM Employer WHERE Employer_Name = '$username';
UNION
SELECT password, salt FROM Clients WHERE Client_Name = '$username';"

这将返回两个表中与where子句匹配的所有值的一个记录集。

答案 2 :(得分:0)

您当然可以查看JOIN查询...

http://www.tizag.com/mysqlTutorial/mysqlleftjoin.php

答案 3 :(得分:0)

我相信您要求返回一个结果,其中客户端中的用户名也是雇主中的雇主名称。如果是这样,你可以这样做一个连接。如果您需要Clients表中的某些信息,您只需将其添加到查询的选择部分即可。

SELECT E.password, E.salt
FROM Employer E JOIN Clients C ON (E.Employer_Name = C.Username)
WHERE E.Employer_Name = '$username';

答案 4 :(得分:0)

如果您想知道被搜索用户属于哪个表,您可以尝试:

$username = mysql_real_escape_string($username);
$query1 = "SELECT password, salt
    FROM Employer
    WHERE Employer_Name = '$username';";
$query=mysql_query($query1);
if(mysql_num_rows($query)>0)
    $from = 'Employer';
else
{
    $query2 = "SELECT password, salt
    FROM Client
    WHERE Client_Name = '$username';";
    $query=mysql_query($query2);
    if(mysql_num_rows($query)>0)
        $from = 'Client';
    else
        $from='none';
}