-1

私のコードは機能しますが、最初の行でしか機能しません。MySQL に別の行を挿入し、別のユーザー名とパスワードでログインしようとすると、エラーが返されます。どうしたの?

<?php
  include_once('db.php');

        $username = $_POST['username'];
        $password = sha1($_POST['password']);

            if(!empty($username) && !empty($password)) {

                $loginSQL = "SELECT * FROM `users` WHERE `username` = '$username' AND `password` = '$password'";

                if($db->query($loginSQL)->fetchColumn() == 1) {

                    $fetchUsers = $db->query($loginSQL)->fetch(PDO::FETCH_ASSOC);
                        $userID = $fetchUsers['uid'];
                            $_SESSION['uid'] = $userID;
                                echo '<br /><br />You have successfully logged in.  <a href="inner.php">Click here</a> to proceed.';


            }

                else {

                    echo '<br /><br />You have entered invalid log-in information.';

        }

    }

    else {

        echo '<br /><br />You have entered invalid log-in information.';

    }



?>
4

2 に答える 2

0

ここにはいくつかの問題があります。

fetchColumn() は、最初の行の最初の列を返します。これは、DB テーブルの設定方法に応じて、1 になる場合とそうでない場合があります。

fetch() は、PDOStatement 行ポインターが置かれている現在の行を返します。次の行に送らないと動かない。

2 つの異なる理由で同じエラーを送信しているため、混乱を招きます。

@Your Common Sense が示すようにコードを再構築し、それを確認すると、本当に役立つでしょう。問題をよりよく理解するのに役立ちます。

于 2013-07-12T21:03:11.530 に答える