合并结果

合并结果

问题描述:

我有两个选择语句合并结果

SELECT username, password FROM users WHERE username='$Uname' 

SELECT email_address FROM users WHERE email_address='$email' 

我可以什么语句,所以我得到的所有结果一次即

用户名作为结果[0],作为结果[1]的密码和作为结果的email_address [2]

解释bett呃。

我想检查我的数据库中是否已经有用户名记录,如果是这样,那么抓住密码,然后再检查密码是否有email_address的记录,以确保用户不被允许拥有重复的用户名或电子邮件地址。

+0

除非你使用正确的[SQL逃逸(http://bobby-tables.com/php)你祈祷,希望你的用户永远键入任何可能被解释为SQL。这样的代码应该**从不**投入生产。 – tadman 2012-08-14 14:24:51

+0

请你多解释一下。谢谢 – Amanni 2012-08-14 14:41:40

+0

“[email protected]”的电子邮件);掉桌用户; - ''可能会导致您的应用程序失败,或者就此而言,任何碰巧包含'''的电子邮件。您绝对必须**转义进入您的SQL语句的任何和所有用户提供的数据。如果您使用PHP,请使用PDO或'mysqli'。 **从不**使用'mysql_query'。这是非常危险的。对每一位用户数据使用占位符,您不会遇到任何问题。 – tadman 2012-08-14 19:02:43

如果您已经知道电子邮件地址(第二个语句变量),那么您为什么要让语句再次返回?

我不知道你正在试图做的,但什么......

SELECT u1.username, u1.password, u2.email_address 
from users u1, users u2 
where u1.username='$UName' 
and u2.email_address == '$email' 

考虑到你的第二个查询只是要回你....

SELECT username, password, '$email' as email_address FROM users WHERE username='$Uname' 
传递值
+0

这是注册页面,所以我想检查数据库中是否已经存在用户名和电子邮件地址 – Amanni 2012-08-14 14:25:26

+0

u1和u2是什么意思? – Amanni 2012-08-14 14:26:17

我想你想的“或”条件:

SELECT username, password, email_address 
FROM users 
WHERE username='$Uname' or email_address='$email' 

可以使用相关子查询检查电子邮件有:

SELECT username, password, email_address 
     (select (case when count(*) > 0 then 'SHARED' else 'UNIQUE' end) 
     from users u2 
     where u.email_address = u2.email_address and 
       u.username <> u2.user_name 
    ) as SharedOrUnique 
FROM users u 
WHERE username='$Uname' or email_address='$email' 
+0

我认为这与我所寻找的更接近,但我想获取该用户名的用户名和密码,然后运行检查以查看该电子邮件地址是否已存在于我的数据库中。 – Amanni 2012-08-14 14:32:11

+0

我很困惑。 。 。电子邮件地址从哪里来?它不在用户的记录中吗?你的意思是,电子邮件地址是否在另一个记录上? – 2012-08-14 14:36:37

+0

是的,如果我已经在我的数据库中有记录 – Amanni 2012-08-14 14:38:08

联合查询合并多个SELECT查询的结果。

SELECT name, price, warranty_available, exclusive_offer 
FROM Products 
UNION ALL 
SELECT name, price, guarantee_available, exclusive_offer 
FROM Services;