私の電子メールがデータベースに存在するかどうかを判断しようとしています。この目的のために私は、コードのこの部分を書く:MySQL - select countがtrueを返します
$query_checkmail = "SELECT COUNT(*) FROM user WHERE email = ?;";
if($stmt = mysqli_prepare($connection, $query_checkmail))
{
mysqli_stmt_bind_param($stmt, "s", $_POST["email"]);
$result = mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
}
echo "<pre>";
var_dump($result, mysqli_fetch_all($result));
echo "</pre>";
メールがデータベースにすべきではないので、私は、クエリが0を返すことを期待しているので、出力は(var_dump
から)これです:
bool(true)
NULL
なぜ値を0にするmysqli結果オブジェクトが得られないのかわかりませんが、それをチェックしたい場合は、常にPHP警告をトリガーするブール値trueです。
私は前に正常なSELECT id FROM user WHERE email = ?;";
を持っていて、同じ結果を得ました。私はCOUNTでこれを防ぐことができると思ったが、私の試みは明らかに失敗した。
私はこのStackoverflow Linkを見つけましたが、不幸にも、値が既に存在するかどうかを知るという私の問題を解決するのに役立たなかったのです。
ご協力いただきまして誠にありがとうございます。この情報が十分でない場合は、欠落しているビットを即時に提供します。
メールが存在するかどうかを確認した後、あなたは何をしますか? – Strawberry
これは新しいユーザーを追加するプロセスです。ログイン資格情報の一部であるため一意でなければならないので、この特定の電子メールアドレスを持つユーザーを持つ必要はありません。したがって、この電子メールアドレスを持つユーザーが既に存在するかどうかを確認する必要があります。はいの場合はエラーを返し、そうでない場合は続行できます。このメールアドレスには誰もいないのに「TRUE」という結果が得られます。 – JRsz
UNIQUEキーを設定してメールを送信するだけです。挿入された結果は、電子メールが存在するかどうかを伝えます。 – Strawberry