当前,我创建一个具有“搜索”功能的系统。在输入文本中,如果我输入正确的徽章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,它将提醒'工作人员合格'
任何人都知道如何解决我的问题吗?
您可以更改查询以在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];
}
}
请注意,使用关联键从表中获取数据要安全得多。如果修改了该表,并在第一和第四列之间增加了一个列,则您的代码将停止工作。