我有一个检查登录页面和以下代码;
$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,即使它在数据库中有所不同,我做错了什么
答案 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]