質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

219閲覧

INSERT INTOによるデータ挿入がうまくできない

kanzaki.ryu

総合スコア4

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/10/13 11:13

前提・実現したいこと

お世話になります。
現在PHPにて、予約システム作成中です。
スタッフ登録の画面を作成し、情報の新規登録を行いたいのですが、
うまく反映されずDBへのデータ挿入がうまくいきません。

発生している問題・エラーメッセージ

前の画面からPOSTにてデータを受けて、
確認画面(staff_add_confirm.php)
にて登録ボタンを押すと、データをstaff_infoテーブルに挿入して、
次画面の(thnaks.php)へ遷移させる。といった流れにしたいです。

ですが現在登録を押しても画面リロードされるのみでして、
アドバイス頂ければ幸いです

該当のソースコード

php

1 2<?php 3// フォームのボタンが押されたらPOSTか確認 4if ($_SERVER["REQUEST_METHOD"] == "POST") { 5 // フォームから送信されたデータを各変数に格納 6 $name = $_POST["name"]; 7 $code = $_POST["code"]; 8 $mail = $_POST["mail"]; 9 $pass = $_POST["pass"]; 10 $pass = sha1($pass); /* 暗号化 */ 11} 12?> 13 14<?php 15// 送信ボタンが押されたら 16if (isset($_POST["submit"])) { 17 // 送信ボタンが押された時に動作する処理をここに記述する 18 //--------------------------------------------------- 19 20 // // DB登録 21 // include('dbconnect.php'); 22 23 try { 24 // DBへ接続 25 $dbh = new PDO("mysql:host=127.0.0.1; dbname=yakiniku_book; charset=utf8", 'root', 'root'); 26 27 $sql = "INSERT INTO staff_info (staff_id, staff_code, staff_name, staff_pass, s.reg_date ) VALUES (1, :$code, :$name, :$pass, :$mail, NOW())"; 28 29 // SQL実行 30 $res = $dbh->query($sql); 31 } catch (PDOException $e) { 32 echo 'DB接続エラー:' . $e->getMessage(); 33 die(); 34 } 35 36 // 接続を閉じる 37 $dbh = null; 38 39 // サンクスページに画面遷移させる 40 header("Location: /thanks.php"); 41 exit; 42} 43 44?> 45 46<?php 47// htmlspecialcharsのショートカットファンクション 48function h($value) 49{ 50 return htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); 51} 52?> 53 54<!DOCTYPE html> 55<html lang="ja"> 56 57<head> 58 <meta charset="UTF-8"> 59 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 60 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 61 62 <meta http-equiv="content-script-type" content="text/javascript"> 63 64 <title>スタッフ登録確認画面</title> 65 <link rel="stylesheet" type="text/css" href="/css/login_style.css"> 66</head> 67 68<body> 69 <div class="wrap"> 70 <div class="header"> 71 <p>YKNK予約システム!</p> 72 </div> 73 74 <div class="back-btn"><a href="index.php" class="btn shop-btn">最初のログイン画面へ</a></div> 75 76 <div class="main"> 77 78 <div class="section login"> 79 80 <h2>登録前確認</h2> 81 82 <p class="txt01">お名前とスタッフコード、メールアドレスを確認してください。 <br>この内容で登録します。</p> 83 84 <div><a href="./book.php">こっそり一覧へ</a></div> 85 <div> 86 <form action="staff_add_confirm.php" method="post"> 87 <input type="hidden" name="name" value="<?php echo $name; ?>"> 88 <input type="hidden" name="code" value=" <?php echo $code; ?>"> 89 <input type="hidden" name="mail" value="<?php echo $mail; ?>"> 90 91 <table class="loginform"> 92 <tr> 93 <th>名前</th> 94 <td><?php echo h($name); ?></td> 95 </tr> 96 <tr> 97 <th>スタッフコード</th> 98 <td><?php echo h($code); ?></td> 99 </tr> 100 101 <tr> 102 <th>パスワード</th> 103 <td>表示しません</td> 104 </tr> 105 106 <tr> 107 <th>メールアドレス</th> 108 <td><?php echo h($mail); ?></td> 109 </tr> 110 111 <!-- check用 --> 112 <?php 113 var_dump($pass); 114 ?> 115 <!-- check用 --> 116 117 </table><br> 118 119 120 </div> 121 <div class="btn"><input type="button" value="内容を修正する" onclick="history.back()"></a></div> 122 <br> 123 124 <div class="btn"> <input type="submit" class="" id="send_btn" value="この内容で登録する"> 125 </div> 126 </div> 127 </form> 128 129 </div> 130 131 </div> <!-- class="header" --> 132 </div> <!-- class="wrap" --> 133</body> 134 135</html>

試したこと

パスワードにて、データを暗号化していること持っていることを表示して確認させている

補足情報(FW/ツールのバージョンなど)

mac,Chrome、php7
mysqlイメージ説明

画像も添付いたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanishi_a

2019/10/13 11:33 編集

リロードされるだけ、ということは if (isset($_POST["submit"])) { ここ通ってるか、とか echo とかしながら、 どこまで想定通りに動いてるか、どこが想定と違うか、問題を狭めていってはどうでしょう?
kanzaki.ryu

2019/10/20 05:37

ありがとうございます。 現段階では、<!-- check用 --> <?php var_dump($pass); ?> <!-- check用 --> にてPWの暗号化確認できてますのでやはりSQL文がダメなのかまたは何かしら設定が足りていないのか。。わからずです。
tanishi_a

2019/10/20 10:29

どこまでが想定通りか順にやってみては?という意味です。 (1) この行は通っているのか $res = $dbh->query($sql); (2) $res の中身は何か (3) FALSEの場合は失敗しているので errorInfo() でエラーメッセージを取得してみるとか
guest

回答1

0

「うまくいかない」じゃなくて、エラーメッセージをきちんと取得して表示 できるように。

質問のテーブルの定義情報は、できれば CREATE TABLE に修正できると適切なコメントが付きやすいです。

SQLの部分だけぱっと見で気がついたとこだけ、
staff_id はAUTO_INCREMENT ですから、自動的に設定されます。

SQL

1$sql = "INSERT INTO staff_info (staff_id, staff_code, staff_name, staff_pass, s.reg_date ) VALUES (1, :$code, :$name, :$pass, :$mail, NOW())"; 23$sql = "INSERT INTO staff_info (staff_code, staff_name, staff_pass, s.reg_date ) VALUES ( :$code, :$name, :$pass, :$mail, NOW())";

投稿2019/10/13 11:31

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/10/14 01:01

s.reg_dateをバッククォートで括らなくてもいいのかなって、ちょっと心配しました
Orlofsky

2019/10/14 01:36

括らないと、エラーになるでしょうね。 CREATE TABLE を載せないとちゃんと見ないからなぁ。
kanzaki.ryu

2019/10/20 05:43

ありがとうございます。今回エラーとして表示しようにも、その場でリロードのみです。 必要な情報や表示方法も今後勉強させていただきます。 何か他にあればぜひとも仰ってください。ぜひこの質問サイトを有効活用していきたいと思っております。 途中に <!-- check用 --> <?php var_dump($pass); ?> <!-- check用 --> としているPWは正常に表示されていますので、やはりSQLに関しての設定や文がまちがっているのかなと思っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問