2012-02-12 99 views
0

我有以下功能:检查两个在一个查询表

function login_check($email, $password) 
{ 
    $email  = mysql_real_escape_string($email); 
    $password = md5($password); 
    $login_query = mysql_query("SELECT COUNT(`id`) as `count`, `id` FROM `table_name` WHERE `email`='$email' AND `password`='$password'"); 

    return (mysql_result($login_query, 0) == 1) ? mysql_result($login_query, 0, 'id') : mysql_error(); 
} 

我想它来检查,如果用户登录界面,在两个不同的表是正确的,不仅之一,因为我做了另一个表用户谁已经通过我的网站验证了他们的Twitter帐户。

+1

如果密码和电子邮件是两个表中的一样吗?我在你的例子中看到你只使用一个表,一个电子邮件和一个密码。 – 2012-02-12 01:31:37

+0

不,不应该.. – wadie 2012-02-12 10:54:48

回答

3

你会与具有“认证与Twitter”标志一个表更好,但你可以像这样同时检查:

select exists(
    select 1 from table_name where email = '$email' and password = '$password' 
    union 
    select 1 from twitter_table where email = '$email' and password = '$password' 
) 

的MySQL会给你一(又名真)如果至少有一个表格有你要找的东西,并且如果两个表格都没有匹配,则为零(也就是假)。

使用select exists(select 1...)伎俩也将低于计数作为数据库只需要找到一个匹配或检查指标就知道有没有匹配它从查询返回以前更快。

+0

是的。有一张桌子会更好,但每张桌子都有不同的行。我怎么能把它们放在一张桌子上? 谢谢。 – wadie 2012-02-12 01:06:09

+1

@wadie:另一张桌子是什么样的? – 2012-02-12 01:14:49

+0

带有oauth行的那个是Twitter的表格。 http://imgit.me/i/5h4m4V5.png http://imgit.me/i/4K5w6U8.png 你觉得我可以再补充两个额外行的第一个表? – wadie 2012-02-12 01:20:35

0

您可以创建两个表的联合视图:

CREATE VIEW combined_accounts AS 
    (SELECT id, twitter_mail AS mail, password FROM twitter_accounts) 
    UNION 
    (SELECT id, mail, password FROM my_accounts);