4

クエリを変数として保存してfetch_arrayを使用することからすべてを試しましたが、$ _ SESSION ['permission']を出力しようとすると、出力「Array」が表示され続けます。どうしたらいいかわからないので助けてください。

<?php
session_start(); 
mysql_connect("localhost","",""); 
mysql_select_db("a"); 
if(isset($_SESSION['loggedin']))
{
    header("Location: http://www.mywebsite.com/whatever");
} 
if($_POST['submit'])
{
   $name = mysql_real_escape_string($_POST['username']); 
   $pass = mysql_real_escape_string($_POST['password']); 
   $mysql = mysql_query("SELECT * FROM users WHERE name = '{$name}' AND password = '{$pass}'"); 
   $result = mysql_query("SELECT permission FROM users WHERE name = '{$name}' AND password = '{$pass}'");
   $permission = mysql_fetch_array($result);
   if(mysql_num_rows($mysql) < 1)
   {
     die("Password was incorrect!");
   } 
   $_SESSION['loggedin'] = "YES"; 
   $_SESSION['name'] = $name; 
   $_SESSION['permission'] = $permission;

   header ("Location: http://www.mywebsite.com/whatever"); 
}  
echo "<form type='login.php' method='POST'>
Username: <br>
<input type='text' name='username'><br>
Password: <br>
<input type='password' name='password'><br>
<input type='submit' name='submit' value='Login'>
</form>"; 
?>
4

4 に答える 4

0

ループを使用して結果セットをトラバースする必要があります。

while($row = mysql_fetch_array($result)) {
//use each row value($row) as per your need
}

だから、私は信じています、あなたはこのようなことを達成したいと思っています。

if(isset($_POST['submit']))
{
$name = mysql_real_escape_string($_POST['username']); 
$pass = mysql_real_escape_string($_POST['password']); 
$result = mysql_query("SELECT permission FROM users WHERE name = '{$name}' AND password                                 = {$pass}'"); 
$permission = mysql_fetch_array($result);
$mysql = mysql_query("SELECT * FROM users WHERE name = '{$name}' AND password =     '{$pass}'"); 
if(mysql_num_rows($mysql) < 1)
{    
 die("Password was incorrect!");
} 

$_SESSION['loggedin'] = "YES"; 
$_SESSION['name'] = $name; 
$i = 0;
while($row = mysql_fetch_array($result)) {    
$_SESSION['permission' . $i] = $row;
$i++;
}
  header ("Location: "); 
 } 
于 2012-12-11T17:07:42.023 に答える
0

コードの POST 部分を編集しただけです。結果を取得し、連想配列を使用して特定の列の値を取得する必要があることに注意してください。

if($_POST['submit'])
{
   $name = mysql_real_escape_string($_POST['username']); 
   $pass = mysql_real_escape_string($_POST['password']); 
   $result = mysql_query("SELECT * FROM users WHERE name = '{$name}' AND password = {$pass}'");

   if(!$row = mysql_fetch_array($result))
   {
      die("Password was incorrect!");
   }

   $_SESSION['loggedin'] = "YES"; 
   $_SESSION['name'] = $name; 
   $_SESSION['permission'] = $row['permission'];
   header ("Location: "); 
}

クエリを 2 回実行する必要はありません。

于 2012-12-11T17:15:54.460 に答える
0

がクエリの結果である場合$rowは、次のような列を指定する必要があります$_SESSION['permission'] = $row[column_name];

于 2012-12-11T17:10:41.083 に答える