2012-04-14 71 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']调用其级别的时间。