1

だから私はこの認証コードを持っています。間違ったユーザー名を入力した場合を除いて、他のすべてが機能します。ページに表示され続けるだけです:「クエリを実行できません:」<--これだけ。何が悪いのかわからない。助けてください。

その部分の私のコードは次のとおりです。

if($UserN){
    if($UserP){
        require("connect.php");

        $query = mysql_query("SELECT * FROM customer WHERE UserName = '$UserN'");
        $numrows = mysql_num_rows($query) or die ('Unable to run query:'.mysql_error());

        if($numrows == 1){
            $row = mysql_fetch_assoc($query)or die ('Unable to run query:'.mysql_error()); // fetch associated: get function from a query for a database
            $dbpass = $row['PassWord']; // read password of inputted user from the query.
            $dbuser = $row['UserName']; // read username from the query
            $dbactive = $row['Active']; // read if user is active
            $dbid = $row['CustNum'];

            if($UserP == $dbpass){
                if($dbactive == 1){
                //set session information
                $_SESSION['CustNum'] = $dbid;
                $_SESSION['UserName'] = $dbuser;

                echo "<br><br><center><b>You have been logged in as <b>$dbuser</b>. <a href='orderform.php'>Click here</a> to go to the member page.</b></center><br><br>";
                }
                else
                    echo "$form <center><b>You need to activate your account.</b></center></br>";
            }
            else
                echo "$form <center><b>You did not enter a correct password.</b></center> </br>";
        }
        else
            echo "$form <center><b>The username you entered was not found.</b></center></br> ";

        mysql_close();
    }
    else
        echo "$form <center><b>You must enter your password. </b></center></br>";
}
else
    echo "$form <center><b>You must enter your username. </b></center></br>";   
4

3 に答える 3

2

あなたの問題mysql_num_rows()は、無効なユーザー名の場合に 0 を返すことです。

次のようにコードを調整できます。

$numrows = mysql_num_rows($query);
if ($numrows === FALSE)
    die ('Unable to run query:'.mysql_error());
if ($numrows === 0) {
    echo "User not found!";
}

が 0 または FALSE を返し===たかどうかをテストするために を使用していることに注意してください。mysql_num_rows()

于 2012-10-03T15:12:58.350 に答える
0
$numrows = mysql_num_rows($query) or die ('Unable to run query:'.mysql_error());

クエリが 0 行を返す場合、この最初の部分は false と評価されます。それがトリガーされdie()ます。

于 2012-10-03T15:13:02.607 に答える
0

結果セットが返された場合に、条件付きチェックに合格するように、この行if($numrows == 1){を次のように変更します。if( $numrows !== FALSE && $numrows >= 1 ){

または、返されるレコードが常に 1 つだけの場合、if( $numrows !== FALSE && $numrows === 1 ){

于 2012-10-03T15:15:02.063 に答える