2012-04-14 21 views
1

ユーザーのユーザー名からユーザーレベルを取り除く方法を見つける必要があります。私のユーザ名変数は: $username = $_SESSION['username']; 私はすでにテーブルに 'users'とカラム 'level'のデータベースに保存されているすべてのユーザレベルを持っています。次のようなセッション変数を作成できるMySqlクエリが必要です。 $_SESSION['level'] = ありがとうございます!PHP - ユーザー名に基づいてユーザーレベルを見つける方法

+0

さらにコードを投稿すると、私とclexmond(あまりにも)があなたをもっと助けることができます。 –

答えて

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

次に、DB(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キーワードを使用する必要があります。例:ユーザーが

$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']; 

に署名されたとき、私はあなたがセッション変数としてユーザー名を格納している時にセッション変数として保存するレベルを示唆して

# 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 ="ユーザからのSELECTレベルWHERE username = '$ username'; "; $結果= mysql_query($ qry); echo "$ result"; ' – Penian4

+1

mysql_queryは間違った方法です。間もなく廃止される予定で、PDOのようなものを使用することで、多くのセキュリティ上の問題が解決されています。私が私の答えに加えたものをチェックしてください。 – clexmond

+0

mysqlクエリコードを教えてください。 – Penian4

0

はかもしれあなたはいけないこの方法は、すべてを照会する必要があります$ _SESSION ['level']を使用していつでもレベルを呼び出すことができるユーザーレベルの時間

関連する問題