-1

スクリプトを実行しようとするたびに、 mysql_num_rows(): supplied argument is not a valid MySQL result resource.なぜこれを実行しているのかよくわからないというエラーが表示されます。私の目標は、ログインしたクライアントが管理者であるかどうかを確認することです。

<?php
    session_start();
    $username = $_POST['username'];
    $password = $_POST['password'];

    if ($username&&$password)
    {

    $user = $_SESSION['user'];
    //connect
    $connect = mysql_connect("localhost","*******_robert","***********") or die ("Couldn't Connect"); //host,username,password
    mysql_select_db("virtua15_gateway") or die ("Could not find database");
    //query
    $get = mysql_query("SELECT * FROM Users WHERE username='$user'");
    $numrows = mysql_num_rows($query);
    if ($numrows!=0)
    {
        while ($row = mysql_fetch_assoc($query))
        {
                $dbusername = $row['username'];
                $dbpassword = $row['password'];
        }
        if ($username==$dbusername&&$password==$dbpassword)
        {
         header( 'Location: index2.php' );
         $_SESSION['username']=$dbusername;
        }
        else
            echo "incorrect username and password";
    }
       else
         die ("This user does not exist");

    }
    else
        die("Please enter a username and a password");


    while($get = mysql_fetch_assoc($get))

{
 $admin = $row['admin'];
}
if ($admin==0)
 die ("You are not and admin!");
header('Location: index2.php')

?>
4

4 に答える 4

3
$get = mysql_query("SELECT * FROM Users WHERE username='$user'");
$numrows = mysql_num_rows($query);

それで、それ$getですか$query

于 2012-01-21T11:19:15.630 に答える
3

クエリ リソースを $get と呼びますが、それを $query として渡します。1つ選択してください:)

$query = mysql_query("SELECT * FROM Users WHERE username='$user'");
$numrows = mysql_num_rows($query);

また、クエリが失敗した場合のエラー チェックを追加します (die() または trigger_error())。

クエリに直接入力するのではなく、入力をエスケープする必要があることにも注意してください ($_POST だけでなく、$_SESSION または $_COOKIES からでも)。そのためにmysql_real_escape_string()を使用してください。また、パスワードをクリア テキストで保存しないでください。sha1()またはより優れたハッシュ アルゴリズムを使用する可能性があります。

于 2012-01-21T11:20:27.283 に答える
2

これを使って:

$get = mysql_query("SELECT * FROM Users WHERE username='$user'");
$numrows = mysql_num_rows($get);

それ以外の :

$get = mysql_query("SELECT * FROM Users WHERE username='$user'");
$numrows = mysql_num_rows($query);
于 2012-01-21T11:21:43.600 に答える
1
$get = mysql_query("SELECT * FROM Users WHERE username='$user'");
$numrows = mysql_num_rows($get);

$query を $get に変更

于 2012-01-21T11:22:18.353 に答える