php - 在一个查询中检查两个表

标签 php mysql sql phpmyadmin

我有以下功能:

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/

相关文章:

带有关联数组的 PHP Count 函数

php - 在php中读取unicode文件

php - 您如何记录您的内联 PHP 函数和类?

php - 每天两次更新 IP 按钮选项?

mysql - 一种使用列项进行计数的方法

Php Mysql 插入存储过程

mysql - 查询以根据MySQL中的第1列选择第2列中的重复项

mysql - 使用 NodeJS 插入 MySQL 日期

sql - 聚合 Azure SQL 数据仓库中的字符串

sql - 将逗号分隔的 id 插入表中