无法将数据从mysql分配给会话数组

时间:2011-05-25 13:43:55

标签: php mysql session login

我有一个检查登录页面和以下代码;

$sql = "select * from users where username = '$username' and password = '$password'";
$result = mysql_query($sql) or die ( mysql_error() );
if(mysql_num_rows($result)>0) 
{
    $line = mysql_fetch_assoc($result);
    $count++;
}
if ($count == 1) 
{
    $_SESSION['login'] = "true";
    $_SESSION['username'] = $username;
    $_SESSION['usertype'] = $line['type'];
}

$ _SESSION ['usertype']总是1,即使它在数据库中有所不同,我做错了什么

2 个答案:

答案 0 :(得分:0)

我建议你在整个过程中做一些调试。

  • 在运行查询之前,验证$username$password是否符合预期:

    echo "Username: {$username} Password: {$password}<br/>";
    
  • 验证您的查询是否返回了正确的值:

    $line = mysql_fetch_assoc($result);
    echo "<pre>";
    var_dump($line);
    echo "</pre>";
    
  • 如果这两个测试都返回了预期值,那么您可能需要调查您的会话 - 它是否正确启动?是否在某处重置?

答案 1 :(得分:0)

$ line返回1,因为它是一个布尔值是/否结果。结果被发现因此返回1.

您必须使用$ line [0] ['type']直接遍历$ line或访问结果集#1;

或者只是获取一行:

取自手册:

**Example #1 Fetching one row with mysql_fetch_row()**
<?php
$result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
if (!$result) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}
$row = mysql_fetch_row($result);

echo $row[0]; // 42
echo $row[1]; // the email value
?>

在您的情况下,如果您将选择更改为“从用户中选择类型....”而不是“选择*”

$line[0]