0

我的列类型是SMALLINT,名称是user_level。这是我正在使用的代码:

<?php
mysql_connect("localhost", "root", "*********");
mysql_select_db("3591_other");
$result = mysql_query("SELECT * FROM rivase_f_users WHERE user_name = '$email' AND    user_pass=sha1('$passwd')");
if (!$result) {
    echo mysql_error();
}
//snip
else if (mysql_fetch_assoc($result)) {
    $row=mysql_fetch_assoc($result);
    $_SESSION['username']=$email;
    if ($row['user_level']==1) {$_SESSION['usertype']='leader';}
    header("Location: index.php");
    die();
}
?>

$row['user_level']看起来是null,但 phpmyadmin 说是1。我尝试通过评论标题位置行来回应它,它什么也没说。我究竟做错了什么?

4

4 回答 4

2

试试这个,

else if ($row = mysql_fetch_assoc($result)) {
    $_SESSION['username']=$email;
    if ($row['user_level']==1) {$_SESSION['usertype']='leader';}
    header("Location: index.php");
    die();
}
于 2012-09-13T07:34:31.233 回答
2

我不清楚您要完成的工作,但您放弃了第一个结果:

else if (mysql_fetch_assoc($result)) {
    //   ^^^^^^^^^^^^^^^^^ Read and discard
    $row=mysql_fetch_assoc($result);
    //   ^^^^^^^^^^^^^^^^^ Read next row
于 2012-09-13T07:35:02.937 回答
1

您遇到了一个逻辑if-else错误。

mysql_fetch_assoc()在测试条件中第一次调用的输出结果后,您正在读取 next 的值else,但您想从第一个返回的结果中读取值。

于 2012-09-13T07:41:05.020 回答
1

根据您的代码试试这个

<?php
mysql_connect("localhost", "root", "*********");
mysql_select_db("3591_other");
$result = mysql_query("SELECT * FROM rivase_f_users WHERE user_name = '$email' AND    user_pass=sha1('$passwd')");
if (!$result) {
    echo mysql_error();
}
//snip
else if ($row=mysql_fetch_assoc($result)) {
    $_SESSION['username']=$email;
    if ($row['user_level']==1) {$_SESSION['usertype']='leader';}
    header("Location: index.php");
    die();
}
?>

我已经更改了 else if 检查以在进行比较时保存该行。

于 2012-09-13T07:48:49.153 回答