-6

私はここでチュートリアルシリーズをフォローしています:https ://www.youtube.com/watch?feature = player_embedded&v = bribF8a3fgoそして私は以下のコードを使用しています、そしてはい、私はこれを行うためのより良い方法があることを知っています。このエラーが発生していますが:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in   /Applications/XAMPP/xamppfiles/htdocs/friends/login.php on line 26

理由はわかりません。すべてを正しく入力していると確信していますが、よくわかりません。見てみませんか?ありがとう。

<html>
<head>
<title>Login - Friend System</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
    <?php include 'connect.php'; ?>

<?php include 'functions.php'; ?>

<?php include 'header.php'; ?>

<div class="container">
<h3>Login</h3>
<form method="post">
<?php
    if (isset($_POST['submit'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];

        if (empty($username) or empty($password)) {
            $message = "Fields Empty, Please Recheck";
        }else {
            $check_login = mysql_query("SELECT id FROM users WHERE username='$username' AND password='" . md5($password) . "'");     


            if(mysql_num_rows($check_login) == 1) {
                $message = "Ok!";
            } else {
                $message = "Username and/or password incorrect!";
            }
        }

        echo "<div class='box'>" . $message . "</div>";
    }
?>
    Username: <br/>
    <input type="text" name="username" autocomplete="off"/>
    <br/><br/>

    Password: <br/>
    <input type="password" name="password" />
    <br/><br/>

    <input type="submit" name="submit" value="Register">
</form>
</div>

</body>
</html>

26行目は次のとおりです。

if(mysql_num_rows($check_login) == 1) {
4

2 に答える 2

2

クエリが失敗するとFALSE、結果セットリソースではなくブール値が返されます。

戻り値がエラーを示しているかどうかを常に確認してから、エラーメッセージをログに記録するなど、意味のある方法でエラーを処理する必要があります。例えば:

if ($check_login === false) {
    die("Error in query: ".mysql_error());
}

if (mysql_num_rows($check_login) == 1) { ...

ちなみに、この古いmysqlAPIは非推奨であり、新しいPHPコードでは使用しないでくださいPDOまたはのmysqli代わりに使用することをお勧めします。

于 2013-03-24T18:36:59.670 に答える
0

$check_loginのコンテキストは有効なクエリではありません。「SELECT」は正しい用語です。クエリが無効な場合は常に、そのエラーが返されます。

$check_login = mysql_query("SELECT id FROM users WHERE username='$username' AND password='" . md5($password) . "'");
于 2013-03-24T18:34:16.697 に答える