MySQL - mysql_fetch_assoc()不提供一列

时间:2012-09-13 07:31:56

标签: php mysql

我的列类型为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 个答案:

答案 0 :(得分:2)

试试这个,

else if ($row = mysql_fetch_assoc($result)) {
    $_SESSION['username']=$email;
    if ($row['user_level']==1) {$_SESSION['usertype']='leader';}
    header("Location: index.php");
    die();
}

答案 1 :(得分:2)

你想要完成的是我不清楚但是你丢弃了第一个结果:

else if (mysql_fetch_assoc($result)) {
    //   ^^^^^^^^^^^^^^^^^ Read and discard
    $row=mysql_fetch_assoc($result);
    //   ^^^^^^^^^^^^^^^^^ Read next row

答案 2 :(得分:1)

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

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

答案 3 :(得分: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();
}
?>

如果在进行比较时检查保存行,我已经更改了其他内容。