PHP / MySQL:即使数据库表中存在数据,也始终显示“无数据”

时间:2019-11-23 02:58:37

标签: php mysql pdo

当前,我创建一个具有“搜索”功能的系统。在输入文本中,如果我输入正确的徽章ID,它将显示所有人员数据,但如果输入错误的数据,则会警告“无数据”。下面是代码:

...
AND 
(M.ActiveEnd > DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 13, 0) 
^                         or M.ActiveEnd is null) then 1 else 0 end)
                                                ^

从上面的查询中,当roles_id ='4',并且我输入了正确的徽章ID时,它将显示所有人员数据。

但是,如果我输入了正确的徽章ID,但是数据库中的roles_id为5,则还会显示警报“无数据”。

现在,我想确保,如果我输入了正确的徽章ID但角色ID不等于4,则会提醒“工作人员合格”

有人知道如何解决我的问题吗?

1 个答案:

答案 0 :(得分:0)

您可以更改查询以在roles_id为4或5时获取用户数据,然后检查在查询中获取的值。如果为5,则会向Staff is eligible发出警报,否则将按照您当前的方式分配从提取中获取的值:

$searchStmt = $conn->prepare('SELECT * FROM users WHERE badgeid = :badgeid AND roles_id IN (4, 5)');
$searchStmt->execute(array(
                ':badgeid'=> $data[0]
));

if($searchStmt) {
    $user = $searchStmt->fetch();
    if(empty($user)) {
        echo "<script>alert('No data')</script>";
    }
    elseif ($user[4] == 5) {
        echo "<script>alert('Staff is eligible')</script>";
    }
    else {
        $badgeid = $user[0];
        $fullname = $user[3];
        $roles_id = $user[4];
    }
}

请注意,使用关联键从表中获取数据要安全得多。如果修改了该表,并在第一和第四列之间增加了一个列,则您的代码将停止工作。