我有以下功能:
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帐户的用户创建了另一个表。
答案 0 :(得分: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将为您提供一个(AKA为真),如果两个表都没有匹配,则为零(AKA为假)。
使用select exists(select 1...)
技巧也比计数更快,因为数据库只需要找到一个匹配项或检查索引,以便在从查询返回之前知道没有匹配项。
答案 1 :(得分:0)
您可以创建两个表的联合视图:
CREATE VIEW combined_accounts AS
(SELECT id, twitter_mail AS mail, password FROM twitter_accounts)
UNION
(SELECT id, mail, password FROM my_accounts);