プログラミング二か月目、MySQL数日目の初心者です。
見よう見まねで全ては理解できていない状態でプログラミングしました。
ユーザ登録画面です、この前のページで名前とメールアドレスを入力してもらい、DBにその情報を送る操作を打ちました。
Mysqlのファイルにデータが送信できることは確認済みです。
ただ、当方の書いたものだと名前とメアドが違う横列に入ってしまいます。
どこを統一すれば同一人物の情報だと認識して、DBに格納されるのでしょうか?
最初のif (!isset($_POST['Name']) || $_POST['Name'] === "" && !isset($_POST['Ad']) || $_POST['Ad'] === "")にするなど試したのですがうまくいきませんでした。
ご教授願います。
<?php //name if(empty($_POST)) { echo "<a href='projlogin.php'>ログイン画面</a>←こちらのページからどうぞ"; }else{ //名前入力判定 if (!isset($_POST['Name']) || $_POST['Name'] === "" ){ echo "名前が入力されていません。"; }else{ //プリペアドステートメント $stmt1 = $mysqli->prepare("INSERT INTO user_list (user_name) VALUES (?)"); if($stmt1){ //プレースホルダへ実際の値を設定する $stmt1->bind_param('s', $Name); $Name = $_POST['Name']; if($stmt1->execute()){ echo htmlspecialchars($Name, ENT_QUOTES, 'UTF-8')."さんで登録いたしました。"; }else{ echo $stmt1->errno . $stmt1->error; } //ステートメント切 $stmt1->close(); }else{ echo $mysqli->errno . $mysqli->error; } } //アド入力判定 if (!isset($_POST['Ad']) || $_POST['Ad'] === "" ){ echo "アドレスが入力されていません。"; }else{ //プリペアドステートメント $stmt2 = $mysqli->prepare("INSERT INTO user_list (user_ad) VALUES (?)"); if($stmt2){ //プレースホルダへ実際の値を設定する $stmt2->bind_param('s', $Ad); $Ad = $_POST['Ad']; if($stmt2->execute()){ echo "メールアドレスは".htmlspecialchars($Ad, ENT_QUOTES, 'UTF-8'); echo "で登録いたしました。"; }else{ echo $stmt2->errno . $stmt2->error; } //ステートメント切断 $stmt2->close(); }else{ echo $mysqli->errno . $mysqli->error; } } } // データベース切断 $mysqli->close(); ?>
回答をもとに変更してみました。
以下のように記述しましたら、
1136Column count doesn't match value count at row 1
のエラーが出ました。
調べたところ、コラムの数が合わないのが原因のようなのですが、対処方法はありますでしょうか?
たしかにDBにはインデックスとしてauto_incrementでもう一つコラムは設定されています。
<?php $name=filter_input(INPUT_POST,"Name"); $ad=filter_input(INPUT_POST,"Ad"); //名前入力判定 //プリペアドステートメント $stmt = $mysqli->prepare("INSERT INTO user_list (user_name,user_ad) VALUES (?,?)"); if($stmt){ //プレースホルダへ実際の値を設定する $stmt->bind_param('s', $Name); $stmt->bind_param('s', $Ad); $Name = $_POST['Name']; $Ad = $_POST['Ad']; if($stmt->execute()){ echo "お名前は".htmlspecialchars($Name, ENT_QUOTES, 'UTF-8')."さん<br>"; echo "メールアドレスは".htmlspecialchars($Ad, ENT_QUOTES, 'UTF-8')."<br>"; echo "で登録いたしました。"; }else{ echo $stmt->errno . $stmt->error; } //ステートメント切断 $stmt->close(); }else{ echo $mysqli->errno . $mysqli->error; } // データベース切断 $mysqli->close(); ?>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/24 07:45
2019/01/24 07:48