2015-10-11 100 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

這是否意味着我應該合併我的管理員,學生和登錄表嗎? –