Php 根据用户级别的案例v筛选结果。如果
好吧,我有点问题 我尝试使用两个不同的表来限制对记录的访问 用户基于4个级别。 1级为最高,4级为最低 用户表有7个字段。另一个表也有下面的字段,用{train_uu…}表示Php 根据用户级别的案例v筛选结果。如果,php,mysql,sql,Php,Mysql,Sql,好吧,我有点问题 我尝试使用两个不同的表来限制对记录的访问 用户基于4个级别。 1级为最高,4级为最低 用户表有7个字段。另一个表也有下面的字段,用{train_uu…}表示 用户ID(AI)Int **用户登录varchar 用户密码 用户电子邮件varchar 用户活动Y/N int **用户代理varchar **usercompvarchar **UserMSC varchar **UserSubMSC int **用户级别int **指示在用户登录后将这些设置为变量 在php代码中
- 用户ID(AI)Int
- **用户登录varchar
- 用户密码
- 用户电子邮件varchar
- 用户活动Y/N int
- **用户代理varchar
- **usercompvarchar
- **UserMSC varchar
- **UserSubMSC int
- **用户级别int
**指示在用户登录后将这些设置为变量
[]是全局变量,{}表示字段名
if ('[usr_level]' == 1)
{
'{train_agencyID}' == '[agencyID]'
}
elseif ('[usr_level]' == 2)
{
'{train_componentID}' == '[componentID]'
}
elseif ('[usr_level]' == 3)
{
'{train_UnitMSC}' == '[mscID]'
}
elseif ('[usr_level]' == 4)
{
'{train_Unit_Comp}' == '[submscID]'
};
案例陈述
WHERE '[usr_level]'
CASE WHEN '[usr_level]' = 1 THEN
train_agencyID = '[agencyID]'
END
OR
CASE WHEN '[usr_level]' = 2 THEN
train_componentID = '[componentID]'
END
OR
CASE WHEN '[usr_level]' = 3 THEN
train_UnitMSC = '[mscID]'
END
OR
CASE WHEN '[usr_level]' = 4 THEN
train_Unit_Comp = '[submscID]'
END
我已经绞尽脑汁3天了,我错过了一些简单的东西,但在我的一生中,我无法理解这一点。我想这可能对你有用,下面是一个php的基本开关语句
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form method="post">
<input type="text" name="user_level" />
<input type="submit" value="submit" />
</form>
</body>
</html>
<?php
$user_level = filter_input(INPUT_POST, 'user_level');
switch($user_level) {
case '1':
$train_agencyID = 'agencyID';
break;
case '2':
$train_componentID = 'componentID';
break;
case '3':
$train_UnitMSC = 'mscID';
case '4':
$train_Unit_Comp = 'submscID';
break;
default:
$error = "Invalid selection.";
}
if(isset($train_agencyID)) {
echo $train_agencyID;
}
elseif(isset($train_componentID)) {
echo $train_componentID;
}
elseif(isset($train_UnitMSC)) {
echo $train_UnitMSC;
}
elseif(isset($train_Unit_Comp)) {
echo $train_Unit_Comp;
}
?>
我添加了更多代码,这样您就可以自己测试并查看输出了。我已经很久没有做过任何重要的php了;那会不会
}代码>导致问题?您的PHP毫无意义。SQL也是如此。你期望得到什么结果?为不同的变量/字段分配不同的值有什么意义?对于SQL代码,表和列应该用反勾号引用。单引号可以工作,但它使代码更具可读性。{train_agencyID}是表单上的varchar字段。表列名为train_agecnyID[agencyID]”是一个varchar全局变量。我希望脚本根据用户[agencyID]检查train\u agencyID记录,并仅返回与语法错误匹配的记录。分析错误:意外}
这是因为第一个}
前面的行没有分号。但正如其他人所说,您的PHP不是有效代码,因此出于许多原因它无法工作。如果($usr_level==1){tbl1.train_agencyID==$agencyID}elseif($usr_level==2){tbl1.train_componentID==$componentID}elseif($usr_level==3),那么这就是没有伪代码的实际代码{tbl1.train\u UnitMSC==$mscID}elseif($usr\u level==4){tbl1.train\u Unit\u Comp==$submscID}我会尝试一下,看看是否能得到更好的结果。很抱歉,我添加了结束括号。代码在修复了几个拼写错误后正在执行,但是它没有按照预期过滤结果。我的测试数据库有32条记录,所有32条记录都被返回。我明天将再次返回php手册…我真的对这一点迷茫了…只有一条记录在这里花了几个月的时间编写php脚本。谢谢。我不确定您是否遵循了我尝试执行的操作。我需要一个基于声明变量进行筛选的条件。用户表第1行有以下数据:usr\u level=1,usr\u agencyID=t101,usr\u componentID=ACC,usr\u MSCID=A19,usr\u submsc=HHC
$usr\u level,$agencyID、$componentID、$mscID、$submscID
表单和记录表上的实际字段如上所示为train\u…
如果$usr\u level=1
它需要基于train\u agencyID=$agencyID
进行过滤,如果$usr\u level=2
它需要基于train\u componentID=$componentID
有可能看到您的表单吗?我想您是对的,我不太了解您需要什么。您可以使用上面的代码找到它们的级别…1、2、3或4。一旦找到它们的$user_级别,然后在该案例块中设置变量,使其与它们的级别相关。