2016-04-10 7 views
0

私は自分のウェブサイトに基本的なログイン機能を実装しようとしています。私は、データベースからデータをフェッチし、ユーザー名とパスワードが正しいかそうでないかどうかを確認するために、次のコードを使用しています:配列を準備してデータをフェッチしてステートメントを選択する

$STH = $conn->prepare("SELECT * FROM users WHERE uid = '$uid'"); 
$STH->bindParam(':uid', $uid); 
$STH->bindParam(':pass', $pass); 

$uid = $_POST['uid']; 
$pass = $_POST['pass']; 

if($STH->execute()) { 

     if($row = $STH->fetch()) { 
      if ($row['pass'] == $pass) { 
       echo "Logged in Successfully <br>"; 
       } else { 
        echo "Username or Password Incorrect<br>"; 
       } 

      } else { 
        echo "<script>alert('Incorrect Username');</script>"; 
      } 
     } 
} 

しかし、私はそれがデータベース内にあるにもかかわらず、エラーIncorrect Usernameを取得しておきます。これは、クエリを実行した後にデータを取得する方法に何か問題があることを意味しますが、正確に何かを理解することはできません。

+0

あなたは準備ができていない文を間違った方法で使用しています。私が書いた[PDOチュートリアル](https://phpdelusions.net/pdo)をお勧めします。 –

+1

'WHERE uid = '$ uid'' <あなたが間違っていて、あなたのクエリに何もバインドしていない場所です。 –

+0

マニュアルを読む、それははるかに良いhttp://php.net/pdo.prepared-statements –

答えて

0

私は準備文を間違って使用していました。私は本当にクエリに何もバインドしていませんでした。正しい実装は次のようになりました:

$STH = $conn->prepare("SELECT * FROM users WHERE uid = :uid"); 
関連する問題