首页 文章

将MySql中的表与一个公共字段连接,但公共字段的值不同

提问于
浏览
1

如何将3个表与一个公共字段连接起来

  • table1:c_id,用户名,密码,c_role

  • table2:p_id,用户名,密码,c_role

  • table3:s_id,用户名,密码,c_role

在这个 c_role 字段在这里我很常见

  • enum '1' for table1中的c_role

  • enum '2' for table2中的c_role

  • enum '3' for table3中的c_role

为他们登录时为3个不同的用户(例如corres,校长和工作人员)提供权利 . 现在当他们登录时,应该识别用户并将他们带到他们的页面 .

3 回答

  • 1

    You should have one table that contains the following columns:

    id(唯一,主要),用户名,密码,角色(INT,将根据用户为主,工作人员或相关人员分配1-3)

    另外

    如果你想这样设置,你可以有另一个名为roles的表:

    id(唯一的,主要的), Headers ( Headers 的选项是委托人,职员或者对应的)

    当用户登录时只需执行类似操作

    if($role == 1){
    // redirect to principal page
    }
    elseif($role == 2){
    // redirect to staff page
    }
    elseif($role == 3){
    // redirect to corres page
    }
    

    我不确定,但我相信这也会有效 . 试试这个查询 .

    (SELECT '1' AS role FROM table1 WHERE username = $username AND password = $password)
    UNION ALL
    (SELECT '2' AS role FROM table2 WHERE username = $username AND password = $password)
    UNION ALL
    (SELECT '3' AS role FROM table3 WHERE username = $username AND password = $password)
    

    假设用户只位于这三个表中的一个表中,那么它应该与用户名和密码匹配,并找出用户来自哪个表 . 然后你可以通过使用来拉出角色

    $role = $row['role'];
    

    如果用户名/密码组合不正确,则$ role将为空,或者您可以获取行数[使用$ iscorrectuser = mysql_num_rows($ query)],其中存在匹配且行数为0.您可以重定向尝试使用“不成功登录”错误消息登录的用户 .

  • 0

    唯一的连接是用户名(和密码?),除非c_id,p_id和s_id都是相同的ID?

    你不能加入角色看见,因为它们在每个表中是不同的,除了完全愚蠢的角色=表1中的1 =表2中的role = 2 .

    你是说工会吗?如你所愿

    User Password Role
    Fred Fr3d     1
    Fred ???      2
    Fred ???      3
    

    不确定你想要用这个模式实现什么,但是它在书中的每个规则附近打破了,似乎不符合你的需求....

    根据您的评论,您可能会看到一种方式 .

    Users (UserID, UserName, Password etc) Key UserID
    Roles (RoleID, RoleName etc) Key RoleID
    UserRoles(UserID,RoleID) Key UserID,RoleID
    

    你需要学习一些关于数据库特别是规范化的知识,前三种形式应该对大多数事情都有用 .

    然后

    Select UserName, Password,RoleName From Users 
    inner join UserRoles on Users.UserID = UserRoles.UserID
    inner join Roles on UserRoles.RoleID = Roles.RoleId
    

    等等变得可能和有效 .

  • 1

    会话和包含功能给出:

    session_start();
     include("config.php"); 
     if(isset($_POST['T_UserName']) && isset($_POST['T_Password']) &&         !empty($_POST['T_UserName']) && !empty($_POST['T_Password']))
     {
    

    从表单发送的用户名和密码:

    $T_UserName=$_POST['T_UserName'];
     $T_Password=$_POST['T_Password'];
    

    保护MySQL注入:

    $T_UserName = stripslashes($T_UserName);
     $T_Password = stripslashes($T_Password);
     $T_UserName= mysql_real_escape_string($T_UserName);
     $T_Password = mysql_real_escape_string($T_Password); 
    
      $sql="SELECT * FROM login WHERE username='$T_UserName' and password='$T_Password'";     $result=mysql_query($sql);
    

    Mysql_num_row正在计算表行:

    $count=mysql_num_rows($result);
    

    如果结果与$ T_UserName和$ T_Password匹配,则表行必须为1行:

    if($count==1)
            {
    

    注册$ T_UserName,$ T_Password并重定向到文件“correspindex.php”:

    session_register("T_UserName");
             session_register("T_Password");
    

    重定向到错误页面或显示错误消息然后:

    if(isset($_POST['emp_role'])
                  { 
                    $userinfo = mysql_fetch_assoc($sql);
                    $emp_role = $userinfo['emp_role'];
             if($emp_role == 1)
                { 
                   header("location:corrrespondindex.php"); 
                } 
                  elseif($emp_role == 2 )
                   {
                   header("location:principalindex.php");
                   } 
                    elseif($emp_role == 3)
                    {
                   header("location:staffindex.php");
                    } 
               closes out if the user DOES exist:
    
                    header("location:loginhome.php"); 
                     } 
                    else
                     { 
                     echo "Wrong Username or Password"; 
                     }
                    }
                 } 
     php is closed
    
           this is the php code im getting so many error
           i create 1table with id,username,password and role(ENUM,values as'1','2','3' –
           any else shud i do in the code???
    

相关问题