如何从具有以下列的(例如)登录表中调用列
username password type(whether admin/user)
我的另一张表说学生表有以下内容
firstname lastname address
我想要的是当用户登录他的帐户时,他的帐户类型将被验证他是管理员还是用户(我已经知道如何实施),我需要知道如何从登录中选择用户名和密码table以及student表中的firstname,lastname和address,并将它们存储到$ _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注入,但请注意,因为我还是学生 . 我很快就会学到的 .
2 回答
您应该合并登录和学生表,然后创建一个单独的用户表,它将包含登录数据和名称以及基本课程信息 . 当你有大约10个字段时,不需要有多个表 . 在这种情况下,您不需要联接来查询您的数据 .
当前架构存在缺陷,因为它们应该是表示实体的唯一标识符(列)(在本例中为用户) . 为了简单起见,应该有一个列“id”,它将作为主用户表的主键,您可以在其中保存用户基本信息,而另一个表可以引用与外键相同的ID .
看看@这两个教程,因为这些将清除您的疑虑
1:Simple Secure Login using PHP / MYSQL
2:Inner Joins in PHP