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
。谢谢大家。反馈很好,谢谢大家。很好的反馈。