Невозможно назначить данные из mysql в массив сессии - PullRequest
0 голосов
/ 25 мая 2011

У меня есть страница чеклогина и следующие коды;

$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 голосов
/ 25 мая 2011

$ line возвращает 1, потому что это логическое значение да / нет. Результат был найден, следовательно, он возвращает 1.

Вы должны перебирать $ line или обращаться к результирующему набору # 1 напрямую с помощью $ line [0] ['type'];

Или просто получить одну строку:

Взято из руководства:

**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]
0 голосов
/ 25 мая 2011

Я бы посоветовал вам выполнить небольшую отладку всего процесса.

  • Убедитесь, что $username и $password - это то, что вы ожидаете, прежде чем выполнять запрос:

    echo "Username: {$username} Password: {$password}<br/>";
    
  • Убедитесь, что ваш запрос возвращает правильные значения:

    <code>$line = mysql_fetch_assoc($result);
    echo "<pre>";
    var_dump($line);
    echo "
    ";
  • Еслиоба эти теста возвращают ожидаемые значения, тогда вам, возможно, придется исследовать ваш сеанс - он запускается правильно? Он сбрасывается куда-то?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...