2012-04-14 32 views
1

我需要找到一種方法來取消用戶的用戶級別。我的用戶名變量是: $username = $_SESSION['username']; 我已經將所有用戶級別存儲在表'用戶'和列'級別'的數據庫中。我需要一個MySql查詢,這將允許我創建一個會話變量,如下所示: $_SESSION['level'] = 在此先感謝!PHP - 如何根據用戶名找到用戶級別?

+0

如果您發佈了更多代碼,我和clexmond(SO too)可以幫助您更多。 – 2012-04-14 21:39:04

回答

2
SELECT level FROM users WHERE username = 'username'; 

然後根據您使用什麼來訪問數據庫(PDO等),抓住關卡並將其插入會話中。

例如,如果你使用PDO:

# Connect to the database 
$db = new PDO("mysql:host=$host;dbname=$dbname", $username, $password); 

$sql = 'SELECT level FROM users WHERE username = :username'; 
$query = $db->prepare($sql); # Prepare SQL statement to prevent SQL Injection Attack 
$query->execute(array(':username' => $username)); # Bind parameter username 
$_SESSION['level'] = $query->getColumn(); # Fetch data & Assign to session variable 

有關使用PDO的更多信息退房http://www.php.net/manual/en/class.pdo.php。注意:如果您使用函數來獲取數據,並且您的$ db連接語句不在該函數中,那意味着您的$ db變量超出了函數的範圍,因此它不起作用。您將需要使用global關鍵字來解決此問題。例如:

# database.php 
$db = new PDO(...); 

# otherfile.php 
require_once("database.php"); 
function makeQuery($sql, $dataArr) { 
    global $db; # tell the compiler we mean the $db object above 
    $query = $db->prepare($sql); 
    $query->execute($dataArr); 
} 
+0

我將如何把它放到一個MySQL查詢? (我是PHP和MySQL的新手)。我試過這個,但沒有奏效。 '$ qry =「選擇級別FROM users WHERE username ='$ username';」; $ result = mysql_query($ qry); echo「$ result」;' – Penian4 2012-04-14 21:06:14

+1

mysql_query是錯誤的路要走。它很快就會被棄用,並且通過使用諸如PDO之類的東西來處理很多安全問題。看看我添加到我的答案。 – clexmond 2012-04-14 21:14:06

+0

你能告訴我mysql的查詢代碼嗎? – Penian4 2012-04-14 21:31:48

0

我建議在當時存儲級別會話變量當你存儲的用戶名作爲會話變量,可以當用戶登錄

$sql="SELECT * FROM $tbl_name WHERE user = '$user' AND pass = '$pass'"; 
$result=mysql_query($sql); 
$user = mysql_fetch_array($result); 
$_SESSION['user'] = $user['user']; 
$_SESSION['level'] = $user['level']; 

這樣你不必查詢每您可以隨時使用$ _SESSION ['level']調用其級別的時間。