電子メールがMySQLテーブル内で重複している場合、すでに登録済みであることをユーザーに伝えようとしています。 mysqli_connect_errno($ link)は '1062'を出力します。これは重複した主キーのコードです。いくつかのヒントが必要です。下のコードは「ありがとうございます!登録済みです!」電子メールアドレスが重複しているかどうかに関係なく、PHPのif ... elseif ....を設定して電子メールの登録を検証する
<?php
$link = mysqli_connect("localhost", "mailpopper", "MAILpopPASSWORD", "mailpop");
// Ensure the connection is working
if($link === false){
die("Could not connect to database. Error: " . mysqli_connect_error());
}
// Escape user inputs for security
$first_name = mysqli_real_escape_string($link, $_POST['fname']);
$last_name = mysqli_real_escape_string($link, $_POST['lname']);
$org = mysqli_real_escape_string($link, $_POST['org']);
$email_address = mysqli_real_escape_string($link, $_POST['email']);
// attempt insert query execution
$sql = "INSERT INTO mail (fname, lname, org, email) VALUES ('$first_name', '$last_name','$org', '$email_address')";
// HERE IS WHERE I NEED HELP
$dupli = mysqli_errno($link);
if($dupli = 1062){
echo "Thanks! You're already registered!";
}
elseif(mysqli_query($link, $sql)){
echo "Success!";
} else{
echo "Error: record was not updated. Unable to post. Please try again or contact site owner with error: " . mysqli_error($link);
}
// close connection
mysqli_close($link);
?>
以下のコードは機能しますが、ユーザーが既に登録されている場合はカスタムメッセージは表示されません。ユーザーが既に登録されている場合は、 ""エラー:レコードが更新されていません。投稿できません。エラーで再試行するか、接触サイトの所有者ください:キー「PRIMARY」 の重複エントリー「[email protected]」 '
if(mysqli_query($link, $sql)){
echo "Success!";
else{
echo "Error: record was not updated. Unable to post. Please try again or contact site owner with error: " . mysqli_error($link);
}
// close connection
mysqli_close($link);
?>
*接続*エラーをチェックするのは何ですか? –
あなたはそうです、私はmysqli_connection_errorをMysqli_errnoに変更しました。私はそれを働かせることができるかどうかを確かめるために物事を試していただけで何らかの理由でそれを切り替えた。 – Huntario
少なくともdownvoting人々downvoting理由を教えてもいいですか? – Huntario