2016-09-27 39 views
0

Table qn_groupsSQL錯誤。 SESSION不能從SELECT中選擇主鍵

這就是我在phpMyAdmin中的表格。我有一個登錄腳本,當登錄信息匹配一組的,它應該初始化所有的$ _SESSION變量從查詢,但登錄腳本後羣體,如果我嘗試

isset($_SESSION['group_id']) 

返回false。以下是登錄功能。 注意GROUP_ID是自動增量的主鍵

public static function Login($username, $password, $conn) 
    { 
     if(!isset($conn)) 
      die("Database connection not established"); 

     //Try logging in as a user first 
     $sql = 'SELECT * FROM qn_users WHERE u_email="'. $username .'" and u_pass="'.md5($password).'" ;'; 
     $sqlval = mysql_query($sql, $conn); 
     if(mysql_num_rows($sqlval) == 1) 
     { 
      session_start(); 
      $_SESSION['type'] = "user"; 
      $_SESSION['email'] = $username; 
      $_SESSION['name'] = $sqlval['u_name']; 
      $_SESSION['score'] = $sqlval['score']; 
      mysql_free_result($sqlval); 
      return 1; 
     } 
     mysql_free_result($sqlval); 

     //Now try to log in as group 
     $sql = 'SELECT * FROM qn_groups WHERE group_email="'. $username .'" and group_pass="'.md5($password).'" ;'; 
     $sqlval = mysql_query($sql, $conn); 
     if(mysql_num_rows($sqlval) == 1) 
     { 
      session_start(); 
      $_SESSION['type'] = "group"; 
      $_SESSION['email'] = $username; 
      $_SESSION['name'] = $sqlval['group_name']; 
      $_SESSION['noOfUsers'] = $sqlval['noOfUsers']; 
      $_SESSION['group_id'] = $sqlval['group_id']; 
      mysql_free_result($sqlval); 
      return 1; 
     } 
     mysql_free_result($sqlval); 
     return 0; 
    } 

$ conn是MySQL連接

$conn = @mysql_connect(dbdetails here) or die(); 

建立連接。這在站點中很明顯,但是在我作爲一個組登錄後,group_id似乎沒有設置。當組添加一個用戶時,我需要group_id,但是當我爲此運行sql時,發現$ _SESSION ['group_id']中沒有任何內容。

+1

$ sqlval是結果集,你需要使用mysql_fetch_assoc或mysql_fetch_array然後取值.....警告你的代碼容易受到SQL注入請使用mysqli或PDO,因爲mysql庫已從php 7中刪除 –

+0

謝謝。這解決了它。 – c0mmand0

回答

1

注:MySQL的的用法已過時,在PHP 5.5.0,它是在PHP中刪除,7.0.0.and它建議使用庫MySQLi *或PDO預處理語句一起。

所有的條件你做了正確的。爲了保存/顯示從數據庫中顯示的值,您必須使用mysql中可用的任何一種方法。

必須使用以下任何方法。

mysql_fetch_array() - 從結果集中取得一行作爲關聯陣列,數字數組,或兩者

mysql_fetch_assoc() - 從結果集中取得一行作爲關聯陣列

mysql_fetch_object( ) - 從結果集中取得一行作爲對象

mysql_data_seek() - 移動內部結果指針

mysql_fetch_lengths() - 獲取每個輸出的長度結果

mysql_result() - 獲取結果數據