【问题标题】:MySQL Can I Select Data from One table OR another Table?MySQL 我可以从一个表或另一个表中选择数据吗?
【发布时间】:2011-08-17 21:55:53
【问题描述】:

我正在为具有两种帐户类型的网站编写登录脚本(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));

【问题讨论】:

  • 只是要把我的两分钱扔在这里。在数据库中设置一个名为account_type 的列不是更容易吗?
  • 我尝试做一个 if else 语句,但结果变得更加复杂并且不断出错。 MySQL 中的 Union Thin 似乎正在我正在寻找的轨道上。
  • @Phil - 尝试使用UNION ALL 而不是UNION,因为UNION 将消除重复(我猜你在这种情况下有重复)

标签: php mysql select login


【解决方案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 ... }

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

【讨论】:

  • 这种方法的一种变体有效!谢谢,让我省了很多麻烦!
【解决方案2】:
select * from table_A where id = 6 union select * from table_b where other_id = 6;

【讨论】:

    猜你喜欢
    • 2012-03-23
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多