我有以下功能:
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 帐户的用户创建了另一个表。
最佳答案
您最好使用一个带有“通过 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 将为您提供 1(又称为 true);如果两者都不匹配,则 MySQL 将为您提供 0(又称为 false)。
使用 select contains(select 1...)
技巧也比计数更快,因为数据库只需要找到一个匹配项或检查索引即可知道它之前没有匹配项从查询中返回。
关于php - 在一个查询中检查两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9245453/