PHP - 如何根据用户名查找用户级别?

时间:2012-04-14 20:56:45

标签: php mysql login

我需要找到一种方法来从用户的用户名中获取用户级别。我的用户名变量是: $username = $_SESSION['username']; 我已经将所有用户级别存储在表''users'和列'level'中的数据库中。我需要一个MySql查询,它允许我创建一个会话变量,如下所示: $_SESSION['level'] = 提前谢谢!

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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']调用它的级别