MySQL我可以从一个表或另一个表中选择数据吗?

时间:2011-08-17 21:55:53

标签: php mysql select login

我正在为具有两种帐户类型的网站开发登录脚本(在HTML,PHP和MYSQL中):帐户“A”和帐户“B”。现在我有一个无线电选择,让用户选择他们拥有的帐户类型。但我想稍微清理登录屏幕,并通过完全删除单选按钮使登录表单适合标题。

如何让脚本首先检查一个表中的结果(用户名和密码),如果没有找到结果,请检查下一个表(用户名和密码),然后找到匹配后将其发送到帐户特定页面?

简而言之,我想取消对单选按钮的需求。

编辑:我没有收到任何错误,但问题是它只从第一个表中选择:这是我的代码:

$q = "SELECT varone, vartwo 
    FROM tablea 
    WHERE (user_email='$e' AND pass=SHA1('$p'))
    UNION
    SELECT varthree, vartwo 
    FROM tableb
    WHERE (contact_email='$e' AND pass=SHA1('$p'))
    ";      
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc));

2 个答案:

答案 0 :(得分:1)

SELECT 'first' AS source, ...
FROM firstable
WHERE (username = $user) and (password = $password)

UNION

SELECT 'second' as source, ...
FROM secondtable
WHERE (....)

然后只需检查代码中结果的来源。

if ($row['source'] == 'first') { ... came from first table ... }

应该有效,假设两个表中都不会出现完全相同的用户名/密码对。

答案 1 :(得分:0)

select * from table_A where id = 6 union select * from table_b where other_id = 6;