基本的なログインサンプルに少し問題があります。ユーザー名とパスワードの組み合わせが間違っていると、elseステートメントのエラーメッセージは表示されません。それはwhile
ループのためでしょうか?私は助けが必要です。コードはelse文にエラーメッセージを表示しません
<?php
$db = new PDO('mysql:host=127.0.0.1;dbname=project', 'root', '');
if(isset($_POST['username'], $_POST['password'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$result = $db->query("SELECT * FROM users WHERE username='$username' AND password='$password'");
if(empty($username) || empty($password)) {
echo 'Empty';
}
while($row = $result->fetch(PDO::FETCH_OBJ)) {
if($username == $row->username && $password == $row->password) {
echo 'Logged in';
} else {
echo 'Incorrect username and password combination';
}
}
}
この質問に対する答えを見つけたら、[SQLインジェクション](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection)を参照してください。 -in-php) – Naruto
_「表示されません」_画面に何も表示されないか、代わりに「ログイン」エコーを表示していますか? – Epodax
@Epodax正しい組み合わせであれば、「ログイン済み」と表示されます。そうでない場合は、何も表示しません(null) – JTrixx16