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

あなたのコードに基づいてこれを試してください

<?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();
}
?>

比較を行うときに行を保存するようにチェックすると、elseifを変更しました。

于 2012-09-13T07:48:49.153 に答える
1

論理的なif-elseバグが発生しています。

mysql_fetch_assoc()条件の最初の呼び出しの出力結果をテストした後に next の値elseを読み取っていますが、最初に返された結果から値を読み取りたいと考えていました。

于 2012-09-13T07:41:05.020 に答える