1

私の問題はコードの MySQL セクションにあると思います。少なくとも 1 つのテーブル行が true になるようにカウントし、ifそれ以外の場合はステートメントを続行する必要がありelseます。コードを実行すると、エラーは表示されず、ページの上部にあるユーザー名とパスワードのほかに空白echoのページが表示され、それらが通過しているかどうかを確認していました。私のコードは以下の通りです:

<?php

$myusername=$_POST['userName']; 
$mypassword=$_POST['password']; 

echo $mypassword;
echo "<br>" . $myusername;

$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

try {
    $conn = new PDO('mysql:host=localhost;dbname=timecard', 'username', 'password');
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare('SELECT COUNT(*) FROM employees WHERE `userName`= :userName AND `password`= :password');

    $stmt->execute(array(':userName' => $myusername, ':password' => $mypassword));

    } catch(PDOException $e){
        echo'ERROR: ' . $e->getMessage();
    }

$res = $conn->query($stmt);

if($res->fetchColumn() > 0){


session_register("myusername");
session_register("mypassword"); 
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
?>
4

1 に答える 1

3

PDO ステートメントを管理する方法に何か問題があります (ドキュメントhttp://php.net/manual/en/pdostatement.fetchcolumn.phpを参照)。次を含む行を削除します。

$res = $conn->query($stmt);

と置き換えます:

if($res->fetchColumn() > 0){

に :

if ($stmt->fetchColumn() > 0) {
于 2013-01-12T22:53:33.870 に答える