如果没有找到,请先检查表A,然后检查其他表

时间:2017-09-09 11:53:13

标签: php mysql

我正在创建一个登录,我有用户A和用户B的单独表。

我想要做的是先检查第一个表中是否有尝试登录的用户在表A中, 如果是,则不会转到表B检查登录凭据,如果不是,请转到表B并检查登录凭据。

表A

SELECT * FROM tableA WHERE userId='$userId' AND password='$password'

表B

SELECT * FROM tableB WHERE accountNumber='$accountNumber' AND password='$password'

注意: 2个表格具有不同的字段名称userIdaccountNumber

4 个答案:

答案 0 :(得分:3)

我认为你是从客户端获取用户名和密码的值,所以我只会告诉你你要求的内容。

   $getUserBasic1=$db->prepare('SELECT * FROM tableA WHERE userId="$userId" AND password="$password"');

$getUserBasic1->execute();
$user= $getUserBasic1->fetchAll();
if(count($user)>0)
{
//if yes do what you want here
}
else
{
$getUserBasic2=$db2->prepare('SELECT * FROM tableB WHERE accountNumber="$accountNumber" AND password="$password"');
$getUserBasic2->execute();
$user2= $getUserBasic2->fetchAll();
//write your code here
} 

答案 1 :(得分:1)

您可以使用INNER JOIN并选择两个表格结果,如果表格A的结果存在则先取结果,否则取表B的结果。

假设两个表都有某种类型的引用,例如用户ID,您可以使用以下内容:

SELECT tbla.*, tblb.* FROM tableA tbla 
INNER JOIN tableB tblb ON tbla.userId = tblb.userId
WHERE userId='$userId' OR accountNumber='$accountNumber' AND password='$password'
ORDER BY userId ASC
LIMIT 1

上面的查询使用cross-reference (userId in this case)并在查询结果之前将两个表连接在一起。它在表B之前按表A对结果进行排序,但将结果限制为1,使表A或表B取决于哪个为空。

答案 2 :(得分:1)

尝试组合表格,例如:

 SELECT * FROM tableA, tableB WHERE tableA.userId='$userId' AND tableA.password='$password' OR tableB.accountNumber='$accountNumber' AND tableB.password='$password'

我没有检查过,所以可能无法正常工作,但看看这是否能满足您的需求!

答案 3 :(得分:1)

这样的事情:

$sql = "SQL QUERY FOR TABLEA";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // checking if result in TABLE A 
    }
else{
    //search in TABLE B by updating your sql value.
}

我希望您想要检查已注册的用户,最好的方法是保留一个表,然后在那里搜索,并将 userID 保留为主键。