Php 根据用户级别的案例v筛选结果。如果

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代码中

好吧,我有点问题

我尝试使用两个不同的表来限制对记录的访问

用户基于4个级别。 1级为最高,4级为最低

用户表有7个字段。另一个表也有下面的字段,用{train_uu…}表示

  • 用户ID(AI)Int
  • **用户登录varchar
  • 用户密码
  • 用户电子邮件varchar
  • 用户活动Y/N int
  • **用户代理varchar
  • **usercompvarchar
  • **UserMSC varchar
  • **UserSubMSC int
  • **用户级别int
    **指示在用户登录后将这些设置为变量
在php代码中,我尝试了IF语句,在SQL中,我尝试了CASE语句

我无法使IF语句正常工作,因为我一直遇到语法错误。分析错误:第行出现意外的}

CASE语句适用于SQL,但是,一旦加载表单,就会导致动态搜索问题

If语句
[]是全局变量,{}表示字段名

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_级别,然后在该案例块中设置变量,使其与它们的级别相关。