【发布时间】:2018-12-18 20:01:27
【问题描述】:
我正在制作一个系统,我需要检查电子邮件是否存在于第一个表或第二个表中。
$results = mysqli_query($db,"SELECT * FROM table_1 WHERE email='$email'");
if(count($results) == 0)
{
$results = mysqli_query($db,"SELECT * FROM table_2 WHERE email='$email'");
}
我想做一个mysql,这样就不需要两个了。由于两个表结构不同UNION 没有给出正确的结果。有没有办法不用UNION or JOINS
我一直在尝试使用 UNION
SELECT * FROM ( SELECT *, 1 as preference FROM table_1 WHERE email = 'doc@demo.com' UNION SELECT *, 2 as preference FROM table_2 WHERE email = 'doc@demo.com' ) T ORDER BY preference LIMIT 1
但问题是,如果表 2 的情况满足,则考虑表 1 的字段并且所有值都不匹配
【问题讨论】:
-
您的脚本对SQL Injection Attack 甚至if you are escaping inputs, its not safe! 都是开放的,在
MYSQLI_或PDOAPI 中使用prepared parameterized statements -
@RiggsFolly 感谢您指出这一点。它是代码的重要组成部分。为了简化,我在这里以最简单的形式写了。我正在为这些使用 mysql 准备好的语句框架。
-
@ClaudiusDan 感谢您的回复。我已经检查了答案。它更像是两个表的合并,但在这里我想比较第一个查询是否返回空结果,然后运行第二个,因为两者都有不同的字段。除了一个是电子邮件之外,这就是我正在检查的地方
-
您可以连接具有不同字段的表...所以是的,您可以执行单个请求...您能给我们完整的 sql 2 请求吗? ?为什么你在谈论表结构差异,因为你在电子邮件字段上搜索,所以我们不必打扰其他字段?