ユーザーがユーザー名またはメールアドレスを入力してパスワードをリセットできるテキストフィールドが1つだけあります。
最初にここにコードがあります:(問題がどこにあるかを知っているコードのみを含めました)。
try {
// connect to database
$dbh = sql_con();
// prepare query
$stmt = $dbh->prepare("
SELECT COUNT(*)
FROM
users
WHERE
user_login = :username
OR
user_email = :email
");
// execute query
$stmt->execute(array(':username' => $username_email, ':email' => $username_email));
if ($stmt->fetchAll() > 0) {
// something was found
// just echoing at the moment until i figure out what i am doing wrong
echo 'i found something';
exit;
} else {
// nothing found
echo 'i found nothing';
exit;
}
}
catch (PDOException $e) {
ExceptionErrorHandler($e);
require_once($footer_inc);
exit;
}
何が間違っているのかわからない、おそらく非常にばかげていることですが、データベースにないことがわかっているユーザー名または電子メールアドレスを入力すると、echo
何かが見つかりました。
私が間違っていることは何ですか?
私は使用するつもりでしたrowCount
が、PHPマニュアルで示唆されているように、次のように述べています。
PDOStatement::rowCount()
対応するPDOStatementオブジェクトによって実行された最後の、、、またはステートメントの影響を受ける行数をDELETE
返しINSERT
ますUPDATE
。
関連付けられたによって実行された最後のSQLステートメントPDOStatement
がであった場合SELECT
。
ステートメントの場合、一部のデータベースは、そのステートメントによって返される行数を返す場合があります。
ただし、この動作はすべてのデータベースで保証されているわけではなく、ポータブルアプリケーションでは信頼できません。
したがって、基本的にPHPマニュアルにはCount(*)
、実際のクエリを実行する前に実行してから結果を処理する必要があると書かれています。