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

问题描述 投票:0回答:1

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

<?php

require_once "../../config/configPDO.php";
require_once "../../config/check.php";
$team =  $_SESSION['team'];

$badgeid = '';
$fullname = '';
$roles_id = '';

function getPosts()
{
    $posts = array();

    $posts[0] = $_POST['badgeid'];
    $posts[3] = $_POST['fullname'];
    $posts[4] = $_POST['roles_id'];

    return $posts;
}

if(isset($_POST['search']))
{
    $data = getPosts();
    if(empty($data[0]))
    {
      echo "
      <script>alert('Please enter badge id')</script>";
    }  else {

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

        if($searchStmt)
        {
            $user = $searchStmt->fetch();
            if(empty($user))
            {
              echo "
              <script>alert('No data')</script>";
            }

            $badgeid = $user[0];
            $fullname = $user[3];
            $roles_id = $user[4];
        }

    }
}

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

但是,如果我输入了正确的徽章ID,但数据库中的role_id是5,它也会显示警报'No data'。

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

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

php mysql pdo
1个回答
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];
    }
}

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

© www.soinside.com 2019 - 2024. All rights reserved.