使用ソフト・目標
<使用ソフト>
エディタ:VScode
サーバー:MAMP 5.7
データベース:phpMyAdmin
<目標>
ログインフォームにおいてメールアドレスとパスワードを入力した際、それがデータベース上で重複していないことを確認した上で、配列を追加し登録完了メッセージを出力する。
発生している問題・エラーメッセージ
フォームへデータベースに存在しない値を入力しても、下記のように「登録に失敗」と表示されてしまいます。
データベース内容・実際のコード
<?php //MySQLデータベースへ接続 サーバー名、ユーザー名、パスワード、データベース名 $link = mysqli_connect("localhost","root","root","memberapp"); //接続エラーメッセージの出力 if(mysqli_connect_error()){ die("データベースの接続に失敗"); } //array_key_exists(キー名、配列名)で配列のキーを検索する if(array_key_exists('email',$_POST) OR array_key_exists('password',$_POST)){ if($_POST['email'] == ''){ echo "Eメールアドレスを入力してください"; }elseif($_POST['password'] == ''){ echo "パスワードを入力してください"; }else { $query = "SELECT `id` FROM `users` WHERE email = '".mysqli_real_escape_string($link,$_POST['email'])."'"; $result = mysqli_query($link,$query); if(mysqli_num_rows($result) > 0){ echo "既にそのメールアドレスは使用されています"; echo "<br><br>"; print_r($result); echo "<br><br>"; }else { $query = "INSERT INTO `users` (`email`,`password`) VALUES ('".mysqli_real_escape_string($link,$_POST['email'])."','".mysqli_real_escape_string($link,$_POST['password'])."')"; if(mysqli_query($link,$query)){ echo "登録されました"; }else{ echo "登録に失敗"; echo "<br><br>"; print_r($result); echo "<br><br>"; } } } } ?> <form method = "post"> <input name = "email" type = "text" placeholder = "Eメール"> <input name = "password" type = "password" placeholder = "パスワード"> <input type = "submit" value = "登録"> </form>
対策
動画学習サイトに沿ってコードを入力しているので、現在のバージョンと学習サイトが使用しているバージョンとの差異によるエラーかと考えていますが、未だ差異は発見出来ていません。
データベースに存在するメールアドレスを入力した場合は問題なく重複を知らせるメッセージが表示されるため、配列の挿入文が間違っている可能性があると考えていますが、解決できていません。
ぜひとも皆さんの知恵をお貸しください。
回答1件
あなたの回答
tips
プレビュー