Php 如何连接两个表以查看这两个表中是否存在值

Php 如何连接两个表以查看这两个表中是否存在值,php,mysql,Php,Mysql,我在将下面的查询连接在一起时遇到问题,因此它的工作效率更高。有人能告诉我如何将这两个查询连接起来,使其仅为一个查询吗 $rs_duplicate = mysql_query("select count(*) as total from advertisers_account where user_email='$user_email' ") or die(mysql_error(

我在将下面的查询连接在一起时遇到问题,因此它的工作效率更高。有人能告诉我如何将这两个查询连接起来,使其仅为一个查询吗

$rs_duplicate = mysql_query("select count(*) as total 
                             from advertisers_account
                             where user_email='$user_email' ") or die(mysql_error());

list($total) = mysql_fetch_row($rs_duplicate);

    }

$rs_duplicate_pub = mysql_query("select count(*) as total 
                                 from publishers_account
                                 where user_email='$user_email' ") or die(mysql_error());

list($totalpub) = mysql_fetch_row($rs_duplicate_pub);


if ($totalpub ||  $total  > 0)
{
    echo "Not Available  ";

} else {

    echo "Available";
}
使用工会:

SELECT 'advertisers' AS which, count(*) AS total
FROM advertisers_account
WHERE user_email = '$user_email'
UNION
SELECT 'publishers' AS which, count(*) AS total
FROM publishers_account
WHERE user_email = '$user_email'
此查询将返回两行,您可以使用
which
列来判断它是广告商还是出版商。

使用联合:

SELECT 'advertisers' AS which, count(*) AS total
FROM advertisers_account
WHERE user_email = '$user_email'
UNION
SELECT 'publishers' AS which, count(*) AS total
FROM publishers_account
WHERE user_email = '$user_email'

此查询将返回两行,您可以使用
which
列来判断它是广告商还是出版商。

这是您可以做到的。您需要使用联接,但应确保查询中的任何变量都不会直接来自外部用户,如表单提交。这将为SQL注入打开大门。使用事先准备好的语句

select count(*) as total from publishers_account INNER JOIN advertisers_account ON advertisers_account.user_email = publishers_account.user_email WHERE user_email='$user_email' 

这就是你能做到的。您需要使用联接,但应确保查询中的任何变量都不会直接来自外部用户,如表单提交。这将为SQL注入打开大门。使用事先准备好的语句

select count(*) as total from publishers_account INNER JOIN advertisers_account ON advertisers_account.user_email = publishers_account.user_email WHERE user_email='$user_email' 
针对: 有人能告诉我如何将这两个查询连接起来,使其仅为一个查询吗

$rs_duplicate = mysql_query("select count(*) as total 
                             from advertisers_account
                             where user_email='$user_email' ") or die(mysql_error());

list($total) = mysql_fetch_row($rs_duplicate);

    }

$rs_duplicate_pub = mysql_query("select count(*) as total 
                                 from publishers_account
                                 where user_email='$user_email' ") or die(mysql_error());

list($totalpub) = mysql_fetch_row($rs_duplicate_pub);


if ($totalpub ||  $total  > 0)
{
    echo "Not Available  ";

} else {

    echo "Available";
}
为什么不:

Select 
(select count(*) as total from advertisers_account where user_email='$user_email') +
(select count(*) as total from publishers_account where user_email='$user_email') as sumofCount
针对: 有人能告诉我如何将这两个查询连接起来,使其仅为一个查询吗

$rs_duplicate = mysql_query("select count(*) as total 
                             from advertisers_account
                             where user_email='$user_email' ") or die(mysql_error());

list($total) = mysql_fetch_row($rs_duplicate);

    }

$rs_duplicate_pub = mysql_query("select count(*) as total 
                                 from publishers_account
                                 where user_email='$user_email' ") or die(mysql_error());

list($totalpub) = mysql_fetch_row($rs_duplicate_pub);


if ($totalpub ||  $total  > 0)
{
    echo "Not Available  ";

} else {

    echo "Available";
}
为什么不:

Select 
(select count(*) as total from advertisers_account where user_email='$user_email') +
(select count(*) as total from publishers_account where user_email='$user_email') as sumofCount
如果计数大于零,则电子邮件在两个表中至少存在一次。如果它只存在于左表(发布者)中,那么计数器将为零。如果它在左表中根本不存在,那么即使它在右表中也不会得到任何行(广告商)


如果计数大于零,则电子邮件在两个表中至少存在一次。如果它只存在于左表(发布者)中,那么计数器将为零。如果它在左表中根本不存在,那么即使它在右表(广告商)中存在,您也不会得到任何行。

PSA:mysql*函数是。不建议编写新代码,因为这样会阻止您将来升级。我也不确定是否能将结果集接收到
列表($total)
。我认为您应该只使用
$total
函数。PSA:mysql的
。不建议编写新代码,因为这样会阻止您将来升级。我也不确定是否能将结果集接收到
列表($total)
。我相信您应该只使用
$total
。谢谢大家。反馈很好,谢谢大家。很好的反馈。