2015-10-11 96 views
-1

从多个表中查询如何调用列从(比方说,例如)登录表,该表具有以下的列如何选择MySQL和PHP

username  password  type(whether admin/user) 

我的其他表说,学生表中有以下

firstname lastname  address 

我要的是当他的帐户的用户登录, 他的帐户类型将被验证他是否是管理员 或用户(我已经知道如何实现),我需要知道如何选择用户名和密码f从登录表连同来自学生表的名字,姓氏和地址并将它们存储到$ _SESSION中我看到了INNER JOIN的语法,但我很困惑,因为它只选择所有列是共同的每个表

下面是我的代码

<?php 
session_start(); 
require('config/db_con.php'); 
if(isset($_SESSION['username']) !="") { 
    header("location: user.php"); 
} 
?> 
<?php 
if(isset($_POST['submit'])){ 
    $user = $_POST['username']; 
    $pass = $_POST['password']; 

    $fetch = mysql_query("SELECT * FROM login where l_user = '$user' && l_pass = '$pass'"); 
    $fetch1 = mysql_query("SELECT * FROM student where s_username = '$user' && s_password = '$pass'"); 
    $data = mysql_fetch_array($fetch); 
    $data1 = mysql_fetch_array($fetch1); 



    if($data['l_type'] == "user" || $data['l_type'] == "User"){ 


    $_SESSION['username'] = $data['l_user']; 
    $_SESSION['password'] = $data['l_pass']; 
    $_SESSION['firstname'] = $data1['s_fname']; 
    $_SESSION['lastname'] = $data1['s_lname']; 
    $_SESSION['course'] = $data1['s_course']; 
    $_SESSION['yrsec'] = $data1['s_yrsec']; 
    $_SESSION['sid'] = $data1['s_sid']; 
    $_SESSION['lid'] = $data1['s_lid']; 

     header('location: user.php'); 
    } 
    else if($data['l_type'] == "admin" || $data['l_type'] == "Admin"){ 


    $_SESSION['username'] = $data['l_user']; 
    $_SESSION['password'] = $data['l_pass']; 
     header('location: admin.php'); 
    } 


} 

?> 

正如你可以看到我有两个SELECT查询,那是因为我试图找到一种方法,但没有一个样本。 PS:我知道这很容易出现SQL注入,但请注意,因为我还是我的学生。我很快就会了解它。

+0

什么是两个表的公共列? – Akshay

+0

@Akshay这不就是为什么我有问题与我的内部连接,但对于您的信息我有一个登录表列l_user和l_type这是有点接近我的学生表与列s_username和s_password是共同的。 –

+0

连接两个表的主要必要性是在它们之间有一个共同的列。 l_user是否从学生登录== s_username? – Akshay

回答

-1

当前模式存在缺陷,因为它们应该是表示实体(本例中为用户)的唯一标识符(列)。为了简单起见,应该有一个“id”列作为主用户表的主键,用于保存用户基本信息,另一个表可以引用与外键相同的id。

看一看@这两个教程,因为这些会清除你的疑虑

1:Simple Secure Login using PHP/MYSQL

2:Inner Joins in PHP

+0

感谢您的建议,但很遗憾,我没有时间阅读本文并学习,但我很感激您的帮助,稍后我会回顾。我仍然是一名学生,还有很多东西需要学习。伤心的是,我还是不知道这件事,因为 –

+0

是内连接唯一的解决方案吗? –

+0

我可以理解,我在学校时也经历过同样的事情。第二个链接谈论所有类型的连接,包括“内部”加入 –

0

您应该合并登录表和学生表,并创建一个单用户表,以便同时存储登录数据和名称以及基本课程信息。当你有大约10个字段的组合时,不需要有多个表格。在这种情况下,你不需要连接来查询你的数据。

+0

但我有另一个表是管理表 –

+0

这两个列的用户名和密码从管理员和学生正持有我的登录以及 –

+0

这是否意味着我应该合并我的管理员,学生和登录表吗? –