合并结果
问题描述:
我有两个选择语句合并结果
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的记录,以确保用户不被允许拥有重复的用户名或电子邮件地址。
答
如果您已经知道电子邮件地址(第二个语句变量),那么您为什么要让语句再次返回?
答
我不知道你正在试图做的,但什么......
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'
传递值
答
我想你想的“或”条件:
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'
答
联合查询合并多个SELECT查询的结果。
SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services;
除非你使用正确的[SQL逃逸(http://bobby-tables.com/php)你祈祷,希望你的用户永远键入任何可能被解释为SQL。这样的代码应该**从不**投入生产。 – tadman 2012-08-14 14:24:51
请你多解释一下。谢谢 – Amanni 2012-08-14 14:41:40
“[email protected]”的电子邮件);掉桌用户; - ''可能会导致您的应用程序失败,或者就此而言,任何碰巧包含'''的电子邮件。您绝对必须**转义进入您的SQL语句的任何和所有用户提供的数据。如果您使用PHP,请使用PDO或'mysqli'。 **从不**使用'mysql_query'。这是非常危险的。对每一位用户数据使用占位符,您不会遇到任何问题。 – tadman 2012-08-14 19:02:43