首页 文章

如何从mysql和php中的多个表中选择查询

提问于
浏览
-1

如何从具有以下列的(例如)登录表中调用列

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 回答

  • 0

    您应该合并登录和学生表,然后创建一个单独的用户表,它将包含登录数据和名称以及基本课程信息 . 当你有大约10个字段时,不需要有多个表 . 在这种情况下,您不需要联接来查询您的数据 .

  • -1

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

    看看@这两个教程,因为这些将清除您的疑虑

    1:Simple Secure Login using PHP / MYSQL

    2:Inner Joins in PHP

相关问题